比较两个不同的列表以填充第三个列表

本文关键字:列表 填充 三个 两个 比较 | 更新日期: 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();

(从我的手机,所以格式可能是关闭的)