簡體   English   中英

將兩個字符串拆分為List <string> 並使用Linq進行比較

[英]Split two strings into List<string> and compare using Linq

我有一個帶有名為“ Color”的字符串屬性的對象列表。 我需要使用空格定界符將字符串拆分為一個列表,並將該列表與另一個列表進行比較,以查看是否使用Linq將包含的任何字符串匹配。

 string searchString = "I like sand";
 List<string> searches = searchString.Split(' ').ToList();

 //Determine if matches exists anywhere between the 2 strings using linq
 List<myObject> obj = myObjectList.Where(x=> searches.Any(a=>x.Color.Contains(a))).Any();

使用當前的Linq查詢,我只能找到完全匹配的內容。 因此,假設我的Objects Color屬性等於“ sand”,查詢將返回一個匹配項,但是如果我的Color等於兩個單詞名稱,如“ sand dune”,則我的查詢將不返回匹配項。

此示例應提供幫助,以解釋匹配時需要返回的內容。

//Two strings should return a match as the word sand is in both
"I like sand"
"sand dune"

//Two strings should NOT return a match as no common words exist
"I like sand"
"Ice cream"

任何幫助表示贊賞。

嘗試拆分兩個字符串,然后使用LINQs Intersect()獲取兩個字符串中的拆分,並使用Any()檢查是否存在這樣的交集:

var first = "I like sand";
var second = "san dune";

var result = first.Split(' ').Intersect(second.Split(' ')).Any();

我建議在null而不是空白字符上進行拆分,這樣就可以在所有空格上進行拆分。 您還可以將其提取為函數:

private static bool CompareStrings(string a, string b)
{
    return a.Split(null).Intersect(b.Split(null)).Any();
}

然后,您可以這樣稱呼它:

bool result = CompareStrings("I like sand", "sand dune");
bool result2 = CompareStrings("I like sand", "Ice cream");

請記住,此解決方案區分大小寫,因此Sandsand 不會匹配。

在這里擺弄

暫無
暫無

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

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