我有两个不同类型的列表,它们有一个我需要比较的常见guid。
如果两个列表中都存在该值,我需要在第三个列表中填充isPresent属性。
class a {
Guid stub;
string name;
int number;
}
class b {
Guid SecondStub;
.
.
}
class temp
{
bool isPresent;
string somethingElse;
}
------------------------------------------
现在我有一个类型a和b的列表,我需要在第三个列表中填充isPresent属性。
foreach (var a in ListofA)
{
temp.Add(new Temp(){
isPresent = ListOfB.Where(l => l.SecondStub == a.Stub).Equals(null)
})};
无效..请帮助。
答案 0 :(得分:1)
在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"};
虽然你没有在临时任何地方说出哪一个是真的,但只有isPresent
标志。
也许你的意思是在temp中包含属性值?
答案 1 :(得分:0)
Where不工作的原因是Where总是返回一个对象,因为它返回一个可枚举的,并且可能没有任何项,但它仍然不是null。
使用Any而不是Where。
var c = a
.Select(x => new Temp {
IsPresent = b.Any(z => z.SecondStub == x.Stub)
})
.ToList();
(来自我的手机,因此可能会关闭格式化)