我有一個字串串列,我需要在另一個字串串列中查找/驗證并回傳找到的字串。
List<string> strList1 = new List<string>() { "oranges", "apples", "grapes" };
List<string> strList2 = new List<string>() {
"Joe likes peaches",
"Mack likes apples",
"Hank likes raisins",
"Jodi likes grapes",
"Susan likes apples"
};
好的,這是一個不好的例子,但基本上,我希望能夠創建一個 Linq 呼叫來查找strList1一個或多個元素中的任何值strList2并回傳找到的值。
所以結果將是strList1在````strList2```中找到的專案串列。就像是:
List<string> found = { "apples", "grapes" };
我的搜索沒有任何結果,因為我可能沒有正確搜索。任何幫助將不勝感激。謝謝!
uj5u.com熱心網友回復:
我想這會回答你的問題
strList1.Where(c => strList2.Any(a => a.Contains(c))).ToList();
uj5u.com熱心網友回復:
我不能保證性能,但這可以使用Where和Any來完成。
strList1.Where(str => strList2.Any(str2.Contains(str)))
或者對于復雜的物件:
objList1.Where(obj => objList2.Any(obj2.property.Contains(obj.property)))
uj5u.com熱心網友回復:
有很多方法可以做到。Intersect如果您首先將“句子”拆分為“單詞”,那么您可能會受益于 linq 。
List<string> strList1 = new List<string>() { "oranges", "apples", "grapes" };
List<string> strList2 = new List<string>() {
"Joe likes peaches",
"Mack likes apples",
"Hank likes raisins",
"Jodi likes grapes",
"Susan likes apples"
};
List<string> found = strList1.Intersect(strList2.SelectMany(s => s.Split(" "))).ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/481536.html
