我想在一個MVC應用程序中編寫一個LINQ查詢,該應用程序允許用戶同時搜索多個字段以查找駐留信息。LINQ在多列上匹配
這是我正在努力完成的一個例子。
用戶有3個文本框來進行搜索:
@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" />
}
可以說,我們已經在我們表如下:
---------------------------------------------------------------
|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 |
我的LINQ查詢,現在是這樣的:
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)));
假設用戶搜索名字:「Joe」姓氏:「Doe」以查找城市中的所有Joe Does。該查詢現在將返回所有「Joe」和所有「Doe」。
爲了讓它只返回「Joe Does」,我需要做些什麼?