![](/img/trans.png)
[英]Split each two-word string in a list, compare if same and count using 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");
請記住,此解決方案區分大小寫,因此Sand
和sand
不會匹配。
在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.