如何使用c#中的Comparsion将List <>复制到另一个List <>

Ane*_*een 5 .net c# generics list

我有两个Lists.我希望根据ID获取匹配和不匹配的值,并将结果添加到另一个List.我可以使用这两种方法Intersect/Except.

但是我只能在结果变量(匹配和不匹配)中获得ID.我需要模板中的所有属性.

List<Template> listForTemplate = new List<Template>();
List<Template1> listForTemplate1 = new List<Template1>();

 var matches = listForTemplate .Select(f => f.ID)
                      .Intersect(listForTemplate1 .Select(b => b.ID));

 var ummatches = listForTemplate .Select(f => f.ID)
                     .Except(listForTemplate1.Select(b => b.ID));

     public class Template
     {
       public string ID{ get; set; }
       public string Name{ get; set; }
       public string Age{ get; set; }
       public string Place{ get; set; }
       public string City{ get; set; }
       public string State{ get; set; }
       public string Country{ get; set; }
     }
     public class Template1
     {
         public string ID{ get; set; }
     }
Run Code Online (Sandbox Code Playgroud)

MAV*_*MAV 3

如果您不想实现IEquality这个简单的任务,您可以修改 LINQ 查询:

var matches = listForTemplate.Where(f => listForTemplate1.Any(b => b.ID == f.ID));
Run Code Online (Sandbox Code Playgroud)

var unmatches = listForTemplate.Where(f => listForTemplate1.All(b => b.ID != f.ID));
Run Code Online (Sandbox Code Playgroud)

您可能想在访问之前检查 null ID,但它应该可以工作。