我有两个字符串列表。
var list1 = new List<string> { "1", "12", "21", "34", "22" };
var list2 = new List<string> { "1", "2" };
我需要列表1的选项,其中项目StartsWith由list2中的项目:"1", "12", "21", "22"
//foreach solution : "1", "12", "21", "22"
var result1 = new List<string>();
foreach (var item in list2)
result1.AddRange(list1.Where(x => x.StartsWith(item)).ToList());
//linq solution : "1"
var result2 = list1.Where(x => list2.Contains(x)).ToList();
如何通过linq解决方案获得result1
?
答案 0 :(得分:3)
您可以将ErrroScreen
与Where
组合使用,如:
Any
你将最终得到:
var query = list1.Where(s1 => list2.Any(s2 => s1.StartsWith(s2))).ToList();
另一种选择是进行交叉连接,然后查询如下:
{"1","12","21","22"}
答案 1 :(得分:2)
var result = list1.Where(x => list2.Any(y => x.StartsWith(y)).ToList();
答案 2 :(得分:0)
使用NinjaNye.SearchExtensions,您可以执行以下操作
using NinjaNye.SearchExtensions;
var query = list.Search(x => x).StartsWith(list2);