我有两个集合,需要从两个集合中创建一个新集合。
假设以下课程:
public class Widget
{
property int Id{get;set;}
property string Label{get;set;}
}
我们有两个IList类。我想创建一个包含Id,Label和Exists的匿名类型
为Id和Label做这个,我有:
var newCol=from w in widgets
select new {Id=w.Id,Label=w.Label,Exists=????}
在Linq中是否有办法我可以在不自行编写循环代码的情况下确定存在?
修改
Exists告诉我们Widget是否在第二个列表中。例如,我刚才想到的一个解决方案是:
var newCol=from w in widgets
select new {Id=w.Id,Label=w.Label,Exists=myWidgets.Contains(w)}
我的小部件是第二个IList。
答案 0 :(得分:3)
你的问题很模糊,但我猜这就是你想要的:
var newCol = from w in widgets
select new { Id = w.Id, Label = w.Label,
Exists = others.Contains(o => o.Id == w.Id }
答案 1 :(得分:1)
您也可以使用GroupJoin执行此操作:
var newCol = widgets.GroupJoin(
otherWidgets,
w => w.Id,
w => w.Id,
(w, joined) => new { Id = w.Id, Label = w.Label, Exists = joined.Any() });