我尝试实现搜索功能,并且我想要选择变量A
和B
中常见的所有元素,然后删除其余元素。
我的代码如下所示:
A.ForEach(y =>
{
temp = temp.Where(x => x.Id== y.Id);
});
问题是如果A
有一些temp
不包含的值,我会得到一个空的温度。
我希望我足够清楚,但只是为了确保:
如果A
包含6,10和
temp
包含10,7。我想要有10个。
什么是正确的加入或任何其他Linq声明?我无法使用intersect
,因为两个变量来自不同的表格。
答案 0 :(得分:4)
您可能希望使用加入。
A.Join(B, a => a.Id, b => b.Id, (a,b) => new { A = a, B = b });
这将产生一个可枚举的A和B连接的行以及匿名类型:
public class AnonymousType {
AType A;
BType B;
}
的信息
答案 1 :(得分:0)
您可以尝试此解决方案,它对我来说效果很好,可以按ID返回两个集合之间的共享元素:IEnumerable SetA和IEnumerable SetB:
IEnumerable<MyClassTypeA> SetA;
IEnumerable<MyClassTypeB> SetB;
Dictionary<Id, MyClassTypeA> entriesOfSetA= SetA.ToDictionary(x=>x.id);
var result= SetB.Where(x=> entriesOfSetA.ContainsKey(x.id));