Ich versuche, eine LINQ-Abfrage in einer MVC-Anwendung zu schreiben, die Benutzern ermöglicht, mehrere Felder gleichzeitig nach residenten Informationen zu durchsuchen.LINQ-Zuordnung für mehrere Spalten
Hier ist ein Beispiel für das, was ich erreichen möchte.
Der Benutzer hat drei Textfelder aus suchen:
@using (Html.BeginForm("Index", "Voters", FormMethod.Get))
{
<p>
Last Name: @Html.TextBox("voterSearchModel.LastNameSearch", !String.IsNullOrEmpty(voterSearchModel.FirstNameSearch) ? voterSearchModel.FirstNameSearch : "")
First Name: @Html.TextBox("voterSearchModel.FirstNameSearch", !String.IsNullOrEmpty(voterSearchModel.LastNameSearch) ? voterSearchModel.LastNameSearch : "")
Address: @Html.TextBox("voterSearchModel.Address", !String.IsNullOrEmpty(voterSearchModel.LastNameSearch) ? voterSearchModel.AddressSearch : "")
</p>
<input type="submit" value="Search" />
}
Können sagen wir folgendes in unserer Tabelle haben:
---------------------------------------------------------------
|FirstName | LastName | Address |
|Bob | Doe | 123 Sesame St. |
|Joe | Doe | 123 Sesame St. |
|Cookie | Monster | 111 FooBar Lane|
|Bob | Magoo | 321 Street Ave.|
|Mark | McAllister | 213 Duckie Ave.|
|Joe | Doe | 18 Sunset Blvd |
Meine LINQ-Abfrage jetzt ist als solche:
voters = voters.Where(voter => (voterSearchModel.LastNameSearch != null && voter.Last_Name.Contains(voterSearchModel.LastNameSearch))
|| (voterSearchModel.FirstNameSearch != null && voter.First_Name.Contains(voterSearchModel.FirstNameSearch)
|| (voterSearchModel.AddressSearch != null && voter.StreetNameComplete.Contains(voterSearchModel.AddressSearch)));
Angenommen, der Benutzer sucht nach Vorname: "Joe" Nachname: "Doe", um alle Joe Does in der Stadt zu finden. Die Abfrage wird jetzt ALLE "Joe" s und ALLE "Doe" s zurückgeben.
Was müsste ich tun, damit es nur das "Joe Does" zurückgibt?