如何通过StartsWith列出2个列表

时间:2015-05-04 14:20:42

标签: c# linq

我有两个字符串列表。

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

3 个答案:

答案 0 :(得分:3)

您可以将ErrroScreenWhere组合使用,如:

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);