Ich habe eine Liste von Objekten des Typs Foo
und eine andere Instanz eines Objekts vom Typ Foo
. Ich möchte Linq verwenden, um die Liste basierend auf den Nicht-Null-Eigenschaften der Instanz zu filtern.Linq: Filterliste des Typs A basierend auf einem Objekt des Typs A?
class Foo {
public int ID;
public string Description;
public long Location;
}
Foo fooFilter = new Foo() {
ID = null,
Description = null,
Location = 1
}
List<Foo> fooList = new List<Foo>();
fooList.Add(new Foo(){ID = 1, Description = "one", Location = 1});
fooList.Add(new Foo(){ID = 2, Description = "two", Location = 0});
fooList.Add(new Foo(){ID = 3, Description = "three", Location = 1});
List<Foo> filteredFooList = fooList.Where(???);
ich irgendwie wollen fooFilter
verwenden fooList
abzufragen und füllen filteredFooList
mit:
[
{ID = 1, Description = "one", Location = 1},
{ID = 3, Description = "three", Location = 1}
]
EDIT:
ich versuchte, sich kurz zu fassen die Frage klarer zu machen, aber Ich könnte wichtige Informationen verlassen haben. In meinem aktuellen Programm ist List<Foo>
ein großes Ergebnis aus einer Datenbank (über 40k Einträge). Ich versuche, eine Controller-Methode (MVC) zu machen, die eine beliebige Kombination von Parametern annehmen kann, die den Feldnamen eines Entity-Framework-Objekts entsprechen. So ist <Foo>
ein EF-Record-Typ. Also versuche ich ausdrücklich zu vermeiden, dass alle aufzulisten, die (15 oder so) Felder, die in der Steuerung gefiltert schaltet werden kann:
public class Home : Controller
{
public ActionResult FilteredFooList(int ID, string Description, long Location, etc, etc, etc)
{
}
}
und etwas mehr wie:
public class Home : Controller
{
public ActionResult FilteredFooList(Foo filterObj)
{
}
}
Vielleicht ist nicht möglich oder eine gute Idee?
Ihr fooFilter ist kein Filter, sondern ein Foo-Objekt. Ein Filterprädikat ist ein Ausdruck, der entweder wahr oder falsch ist, richtig? – elgonzo
'.ID' und' .Location' können nicht 'null' sein, da sie Werttypen sind. Wie planen Sie mit Werttypen umzugehen? – NetMage
True, 'fooFilter' ist ein Beispiel für eine Abfrage mit Beispiel, wie 'System.DirectoryServices.AccountManagement.PrincipalSearcher' funktioniert. – NetMage