Abfrage eine winforms Steuerung mit CheckedListBoxItemCollection.AsQueryable (). Provider.CreateQuery (
-
01-10-2019 - |
Frage
Ich brauche eine WinForms Kontrolle abzufragen ( CheckedListBoxControl ) ein mit CheckedListBoxItemCollection , die ich Abfrage wollen für eine bestimmte Id: , die innerhalb der ist Eigenschaft "Value" des CheckedListBoxItem .
CheckedListBoxItemCollection items = myCheckedListBoxControl.Items;
foreach(Department dep in departmentList)
{
bool isDepExisting = items.AsQueryable().Where( the .Where clause does not exist );
// How can I query for the current dep.Id in the departmentList and compare this dep.Id with every Item.Value in the CheckedListBoxControl and return a bool from the result ???
if(!isDepExisting)
myCheckedListBoxControl.Items.Add( new CheckedListBoxItem(dep.id);
}
UPDATE:
IEnumberable<CheckedListBoxItem> checks = items.Cast<CheckedListBoxItem>().Where(item => item.Value.Equals(dep.InternalId));
Warum sagt Visual Studio, dass die IEnumerable oder die IEnumberable Namespace nicht gefunden werden kann? Wenn ich „var“ verwenden, anstatt dann kann ich meinen Code kompilieren. Aber der Chef in meiner Firma forbide meine verwenden var ...
Lösung
CheckListBox.Items nur implementiert IEnumerable, nicht IEnumerable<T>
. Sie erhalten die Überlastung von AsQueryable (), die IQueryable (nicht die generische) zurückgibt. Welche hat nur den Stab und OfType Erweiterungsmethoden.
Guss der Elemente von Objekt zu Abteilung zurück. Wie folgt aus:
var q = checkedListBox1.Items.Cast<Department>().AsQueryable().Where((d) => d.Id == 1);
Sie brauchen nicht AsQueryable () mehr btw.