C# 检查 list<t> 是否包含任何另一个列表和 return 匹配项
C# Check if list<t> contains any of another list and return the matching item
我有一个字符串列表,我需要 find/verify 在另一个字符串列表中 return 找到的字符串。
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 调用,以在 strList2
和 [ 中的一个或多个元素中查找 strList1
中的任何值=26=] 找到了哪些。
所以结果将是在 ````strList2``` 中找到的 strList1
项的列表。类似于:
List<string> found = { "apples", "grapes" };
我的搜索没有任何结果,因为我可能没有正确搜索。任何帮助将不胜感激。谢谢!
strList1.Where(str => strList2.Any(str2.Contains(str)))
或者对于复杂对象:
objList1.Where(obj => objList2.Any(obj2.property.Contains(obj.property)))
我想这会回答你的问题
strList1.Where(c => strList2.Any(a => a.Contains(c))).ToList();
有很多方法可以做到。如果您首先将“句子”拆分为“单词”,则执行 linq 可以受益于 Intersect
。
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();
我有一个字符串列表,我需要 find/verify 在另一个字符串列表中 return 找到的字符串。
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 调用,以在 strList2
和 [ 中的一个或多个元素中查找 strList1
中的任何值=26=] 找到了哪些。
所以结果将是在 ````strList2``` 中找到的 strList1
项的列表。类似于:
List<string> found = { "apples", "grapes" };
我的搜索没有任何结果,因为我可能没有正确搜索。任何帮助将不胜感激。谢谢!
strList1.Where(str => strList2.Any(str2.Contains(str)))
或者对于复杂对象:
objList1.Where(obj => objList2.Any(obj2.property.Contains(obj.property)))
我想这会回答你的问题
strList1.Where(c => strList2.Any(a => a.Contains(c))).ToList();
有很多方法可以做到。如果您首先将“句子”拆分为“单词”,则执行 linq 可以受益于 Intersect
。
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();