Ich habe eine findAll
Funktion, die alle Datensätze aus einer Contacts
Tabelle in der Datenbank abruft und sie dann filtert, je nachdem, welche Werte der Benutzer in der Suchmaske ausgewählt hat. Die Ergebnisse werden jeweils zu einem Filter gefiltert.C# IQueryable funktioniert nicht
IQueryable<Contact> resultContacts = db.Contacts;
if(request['Name'] != "")
{
resultContacts = resultContacts.Where(a => a.Name.Contains(Name));
}
if(request['Phone'] != "")
{
resultContacts = resultContacts.Where(a => a.Phone.Equals(Phone));
}
if(request['Company'] != "")
{
resultContacts = resultContacts.Where(a => a.Company.Contains(Company));
}
return resultContacts;
Das Problem ist, dass dies jetzt nicht funktioniert. Die resultContacts.Where
innerhalb jedes if
wird auf das ursprüngliche resultContacts
zurückgesetzt, das ich aus irgendeinem Grund in der ersten Zeile hatte. Zum Beispiel: wenn ich debugge, gelten die Änderungen innerhalb der 1. wenn (ich am Ende mit 10 von 100 Datensätze), aber wenn ich in die 2. wenn gehe, fragt der Code das Original resultContacts
, nicht die 10 hatte ich als a Ergebnis der ersten if
.
Dies funktionierte gut für über ein Jahr bis vor 2 Wochen. Ich weiß nicht, ob sich etwas an meinem Code geändert hat ... wenn ich eine Referenz oder etwas hinzugefügt habe, das diese Änderung macht.
Irgendeine Idee warum? Vielen Dank!
Wollten Sie das Anfrageobjekt in jeder Abfrage verwenden? Wie '.Contains (Anfrage ['Name']));' – Niklas
Ich bin erstaunt C# erlaubt diese Syntax 'Anfrage ['Phone']' einzelnes Zitat Umarmung 'char' nicht' string' – Imad
Auch, 'Anfrage ['Name' ] 'ist nicht dasselbe wie' Name'. Dito für 'Telefon' und' Firma'. Legen Sie keinen Code, der irgendwie aussieht wie das, was Sie haben. Post * echter * Code. – hvd