Linq to SQL mehrere bedingte where-Klauseln
Im moment bin ich abrufen meine Ergebnisse wie folgt :
public List<claim> GetClaims()
{
return _db.claims.OrderBy(cl => cl.claimId).ToList();
}
Aber jetzt versuche ich, Sie können bis zu 8 bedingte where-Klauseln basierend auf filtern über meinem listview.
Also verwandelte ich mich in:
public List<claim> GetFilteredClaims(string submissionId, string claimId,
string organization, string status,
string filterFromDate, string filterToDate,
string region, string approver)
{
return _db.claims.Where(cl => cl.submissionId == 5).ToList();
}
Wie kann ich ein Kontrollkästchen für jeden filter zum hinzufügen einer where-Klausel nur, wenn Sie einen Wert enthalten?
- Werfen Sie einen Blick auf die Antwort hier: stackoverflow.com/a/8841339/138938
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt keinen Grund, warum Sie können nicht nur halten Sie die Ergebnisse filtern, die durch den Aufruf
.Where
mehrmals. Aufgrund der verzögerten Ausführung von LINQ to SQL wird das alles ausgeführt werden in einer SQL-Anweisung:Wenn Sie jemals brauchen werden, um hinzuzufügen ODER zu Bedingungen, die Sie könnte nehmen Sie einen Blick auf PredicateBuilder.
Könnten Sie jeden filter-option mit einem ODER null-Zustand, und die Kette die Sie alle zusammen mit UND, etwa so:
Also, wenn submissionId == null und claimId == "123" sein, es würde nur zu filtern, die Ergebnisse auf claimId. Sie ersetzen könnte jeder
null
mit einem leeren string oder was auch immer Ihr "kein-Wert" - Bedingung ist.Werfen Sie einen Blick auf LINQKIT http://www.albahari.com/nutshell/linqkit.aspx Es Ihnen erlaubt, zu bauen Prädikat
Hier ist ein code, den ich bedienen, aber Lesen Sie die Dokumentation vor. Das Prädikat wird Ihnen erlauben, um die Kette ein Bündel von ODER oder UND oder eine Kombination davon.