2012-04-08 3 views
1

я следующий кодсоединение двух списков при условии

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace TestSomethingRelatedToLINQ 
{ 
    class Person : IEqualityComparer<Person> 
    { 
     internal int personID; 
     internal string PersonName; 


     public bool Equals(Person x, Person y) 
     { 
      return x.personID == y.personID; 
     } 
     public int GetHashCode(Person obj) 
     { 
      return obj.personID.GetHashCode(); 
     } 


    } 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      List<Person> list1 = new List<Person>{    
      new Person{personID = 1 , PersonName = "Ali"}, 
      new Person{personID = 2 , PersonName = "Ali1"}, 
      new Person{personID = 3 , PersonName = "Ali2"}    
      }; 

      List<Person> list2 = new List<Person>{    
      new Person{personID = 4 , PersonName = "Habib1"}, 
      new Person{personID = 2 , PersonName = "Habib2"}, 
      new Person{personID = 5 , PersonName = "Habib3"}    
      };   



     } 
    } 
} 

Мне нужно, чтобы выбрать все элементы в list1, и все элементы на list2, который не имеет PersonId существует в List1, а затем заказать результат по PersonId

новый выход должен быть как

1, Ali 
2, Ali1 
3, Ali2 
4, Habib1 
5, Habib3 

любая идея, как использовать это

ответ

2

Первый вызов LINQ Concat, так что вы добавите список 2 в список 1.

Затем вызовите LINQ Distinct, который удалит записи, которые являются дубликатами (либо предыдущими, либо последними).

This site предлагать классы, которые вы используете, вы просто реализуете интерфейс IEqualityComparer.

+0

большое спасибо за этот совет, я ошибся в чем-то, после того как исправление получилось очень хорошо – AMH