Wie, um alle Elemente in eine ObservableCollection das erfüllen einer Bedingung C#
Ich bin auf der Suche nach einem ordentlichen Weg zu finden, alle Werte in eine observable collection, welche bestimmte Kriterien erfüllen. Für dieses Beispiel um Dinge einfach zu halten sagen wir, dass seine Sammlung enthält Ganzzahlen und ich versuche zu finden, alle Elemente, die größer sind als 5.
Die beste Möglichkeit, die ich derzeit wissen, es zu tun ist, wie dieses
ObservableCollection<Int> findAllGreaterThanFive (ObservableCollection<Int> numbers)
{
ObservableCollection<Int> numbersGreaterThanFive;
foreach(Int number in numbers)
{
if (number > 5)
{
numbersGreaterThanFive.add(number);
}
}
return numbersGreaterThanFive;
}
Offensichtlich ignorieren alle einfachen Lösungen, die die Vorteile der Tatsache, ich bin auf der Suche nach ints brauche ich eine Lösung, die funktioniert mit jedem ObservableCollection jede Art mit jeder Bedingung. Ich Frage mich nur, ob die überprüfung jedes Element mit der foreach-Schleife und die bedingte ist der beste Weg, es zu tun?
- warum sind Sie der Rückkehr eine neue Kollektion?
- Senden Sie in den filter 2. parameter der Methode. Verwenden Sie eine Func<int,bool> in diesem Fall.
- Ich würde sagen, die Verwendung von LINQ. Verzögerte Ausführung ist dein Freund in diesem Fall.
Du musst angemeldet sein, um einen Kommentar abzugeben.
können Sie mit System.Linq-namespace, fügen Sie using-Anweisung
using System.Linq
und danach benutzen Sie folgendenWhere
Methode.können Sie jede Art von Objekten, wie :
Den obigen code gibt DataItem ist mit ID größer als 10 ist.
Wenn Sie sicher es gibt nur einen Datensatz befriedigender Zustand, können Sie
First()
Methode wie :Obigen code gibt das DataItem mit der ID 10. Aber wenn es keinen Datensatz mit der ID = 10, dann wird eine Ausnahme geworfen. Vermeiden Sie diese, wenn Sie sind nicht sicher, es ist nur ein Datensatz erfüllt die Bedingung. Sie können auch verwenden
FirstOrDefault()
Methode.Wenn es keinen Datensatz mit der ID = 10, dann Punkt null.
Können Sie etwas sagen wie:
return new ObservableCollection<Int>(numbers.Where(x => x > 5))
..ToList()
Methode auch. z.B.var numbersGreaterThanFive = numbers.Where(x => x > 5).ToList();