Dies ist mein Code, der Informationen aus der Datenbank über eine Liste von Druckertreibern abruft. Die Tabelle enthält eine Liste der Druckertreiber sowie die Server, auf denen sie gefunden wurden.Verschachteln einer Liste <string> in einer benutzerdefinierten Klasse Liste über eine LINQ-SQL-Abfrage
public List<PrinterDrivers> GetPrinterDriversFromCache()
{
using (dbPrintSimpleDataContext db = new dbPrintSimpleDataContext())
{
var q = from p in db.GetTable<tblPrinterDriverCache>()
where p.CacheGUID == mostRecentCacheID()
group p by p.PrinterDriver into g
select new PrinterDrivers
{
DriverName = g.Key,
InstalledOn = g.Where(x => x.PrinterDriver == g.Key).Select(x => x.PrinterServer).ToList(),
Usable = (g.Count() == Properties.Settings.Default.PrintServers.Count)
};
return q.ToList();
}
}
Was ich zurück bin versucht, eine Liste, die eine Eigenschaft enthält, die eine Liste in sich hat, das enthält, was Server, die Druckertreiber existiert, ist. Ich denke, dass ich gegen die Grenze meiner aktuellen LINQ SQL-Kenntnisse :(
Die resultierende Liste enthalten:
Driver = Druckertreibernamen, in diesem Fall der Gruppenschlüssel (string)
InstalledOn = Liste (enthält die Liste der Server, auf denen dieser Druckertreiber gefunden wurde)
Verwendbar = Eine einfache Überprüfung, ob die Server, auf denen sie gefunden wurde, die gleiche Menge wie die Server in der Einstellungsdatei haben.
Danke für die Hilfe :)
Können Sie genau das Problem ausarbeiten, vor dem Sie stehen? –
InstalledOn enthält falsche Ergebnisse, dh keine Ergebnisse, die ich erwartet habe. Ich erwartete, dass jeder gruppierte DriverName eine Liste der Druckserver enthielt, auf denen er installiert war. Die Tabelle in dieser Abfrage enthält eine Liste von Druckertreibern und Druckservern. Daher sollte die Abfrage nur den angegebenen Druckertreiber zusammen mit einer Liste der gefundenen Server zurückgeben. Ist das sinnvoll? Ich bin ein bisschen neblig, weil ich den ganzen Tag programmiert habe –