C#如何 linq 2 列表由 StartsWith 之间

标签: Linq C#
发布时间: 2017/2/27 4:31:05
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有两个列表的字符串。

var list1 = new List<string> { "1", "12", "21", "34", "22" };
var list2 = new List<string> { "1", "2" };

我需要在 list2 中选择的 list1 地方项目由 StartsWith 项目的项目︰"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();

怎样才能 result1 由 linq 解决方案?

解决方法 1:

你可以使用组合的 WhereAny 一样︰

var query = list1.Where(s1 => list2.Any(s2 => s1.StartsWith(s2))).ToList();

你最终会与︰

{"1","12","21","22"}

另一种选择做交叉联接,然后类似的查询︰

var query = from s1 in list1
            from s2 in list2
            where s1.StartsWith(s2)
            select s1;
官方微信
官方QQ群
31647020