簡體   English   中英

如何在LINQ中構造動態查詢?

[英]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)))

您可以使用AllAny方法。 這取決於您的需求。

我認為您的意思是要搜索是否有以下條目:

where textBox1.Text.Split(' ').All(t => d.Element("Description").Value.Contains(t))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM