我有一個LINQ語句,這樣說明哪些條件在LINQ被匹配,其中
dbContext.Items
.Where(
p =>
(p.Client.Contact != null && p.Client.Contact.Firstname.ToLower().Contains(searchText.ToLower()))
||
(p.Client.Contact != null && p.Client.Contact.Surname.ToLower().Contains(searchText.ToLower()))
||
(p.PolicyNumber != null && p.PolicyNumber.ToLower().Contains(searchText.ToLower()))
||
(
p.PolicyLivesAssureds
.Where(
pl =>
pl.Contact != null && pl.Contact.Firstname.ToLower().Contains(searchText.ToLower())
|| pl.Contact.Surname.ToLower().Contains(searchText.ToLower())
).Count() > 0
)
)
).OrderBy(p => p.IeUtem);
這實際上是需要自動完成。我想要做的是能夠確切地知道我的5個條件中的哪些已匹配並顯示已匹配的特定項目。例如說,PolicyNumber已匹配,我想只發送該行的policynumber,對於其他人,如果名稱已匹配,我只想發送該行的名稱。
有沒有辦法做到這一點;
單獨的查詢。通過這種方式,更容易計算單獨組件的結果並將結果存儲到專用對象中。雖然,由於您正在使用'OrderBy',您可能想要在某處再次合併數據。 – Stefan
你使用C#6.0嗎?你這樣,一些表達式可以簡化爲:'p.Client.Contact!= null && p.Client.Contact.Firstname.ToLower()。Contains(searchText.ToLower())'''p.Client.Contact? .Firstname.ToLower()。包含(SEARCHTEXT。ToLower())' – Ian