![](/img/trans.png)
[英]How to construct dynamic LINQ query string be for a query that looks like *abc*def*
[英]How to construct dynamic query in LINQ?
用戶在文本框中輸入要在旅行目的地中尋找的關鍵字。 有時,他們只是鍵入“熱”,有時是“熱潮濕暴風雨”等。
此代碼適用於單個關鍵字:
where d.Element("Description").Value.Contains(textBox1.Text)
如何修改代碼以構建查詢,使其適用於任意數量的關鍵字? 請注意,在文本框中鍵入的所有關鍵字都必須匹配。
首先,我會定義一個ContainAny
擴展方法用於String
封裝在尋找多個值String
public static bool ContainsAny(this string source, IEnumerable<string> values) {
foreach (var cur in values) {
if (source.Contains(cur)) {
return true;
}
}
return false;
}
然后,您可以使用String.Split
方法分解textBox1.Text
的單詞,並將其提供給ContainsAny
where d.Element("Description").Value.ContainsAny(textBox1.Text.Split(' '));
var keywords = textBox1.Text.Split(' ');
//-------
.Where(e => keywords.All(w => d.Element("Description").Value.Contains(w)))
您可以使用All
或Any
方法。 這取決於您的需求。
我認為您的意思是要搜索是否有以下條目:
where textBox1.Text.Split(' ').All(t => d.Element("Description").Value.Contains(t))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.