Mag*_*agB 4 c# linq lambda nested-loops
(参见下面的代码片段)我想找到与coll2的项目匹配的coll1的所有项目(coll2的项目数<= coll1的项目数),并将查询结果放在coll3中.如何使用linq和lambda表达式实现它?当然,我可以简单地将coll2复制到coll3 :-)但这不是我的目标.我想知道使用linq和lambda来代替这种传统逻辑结构的方法.先感谢您.
var coll1 = new List<int>() { 1, 2, 3, 4, 5 };
var coll2 = new List<int>() { 2, 4 };
var coll3 = new List<int>();
foreach ( var selected in coll2 )
{
foreach ( var item in coll1 )
{
if ( selected == item )
{
coll3.Add(item);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Ani*_*dha 14
您可以使用Intersect
coll1.Intersect(coll2);
Run Code Online (Sandbox Code Playgroud)
但这不会按预期工作(参见King King的评论)..你可以改为做到这一点
coll2.Where(x=>coll1.Any(y=>x==y));
Run Code Online (Sandbox Code Playgroud)
coll3 = coll1.Where(i => coll2.Contains(i)).ToList();
Run Code Online (Sandbox Code Playgroud)
更新.如评论中所建议的那样简单一点:
coll3 = coll1.Where(coll2.Contains).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4814 次 |
| 最近记录: |