比较两个不同的列表以填充第三个列表
本文关键字:列表 填充 三个 两个 比较 | 更新日期: 2023-09-27 18:08:17
我有两个不同类型的列表,它们有一个共同的指南,我需要比较。
如果该值同时存在于两个列表中,则需要在第三个列表中填充isPresent属性。
class a {
Guid stub;
string name;
int number;
}
class b {
Guid SecondStub;
.
.
}
class temp
{
bool isPresent;
string somethingElse;
}
------------------------------------------
现在我有一个类型为a和b的List,我需要在第三个List中填充一个isPresent属性。
foreach (var a in ListofA)
{
temp.Add(new Temp(){
isPresent = ListOfB.Where(l => l.SecondStub == a.Stub).Equals(null)
})};
不工作。请帮助。
在linq语法中应该是这样的:
var temps = from a in ListofA
join b in ListofB on a.SecondStub == b.Stub
select new temp { isPresent = True,
OtherProperty = "something",
ThirdProperty = "something else"};
虽然你没有在temp中留下任何地方来说明哪个是正确的,只有isPresent
标志。
也许你的意思是在temp的属性中包含值?
Where不工作的原因是Where总是返回一个对象,因为它返回一个可枚举对象,并且可能没有项在其中,但它仍然不是null。
用Any代替Where
var c = a
.Select(x => new Temp {
IsPresent = b.Any(z => z.SecondStub == x.Stub)
})
.ToList();
(从我的手机,所以格式可能是关闭的)