加入两个列表条件
问题描述:
下,我有以下代码加入两个列表条件
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"}
};
}
}
}
,我需要选择列表1中的所有元素,并在不具备PERSONID存在于列表1 list2中的所有元素,然后责令结果由PERSONID
新的输出应该像
1, Ali
2, Ali1
3, Ali2
4, Habib1
5, Habib3
任何想法如何使用
答
首先调用LINQ Concat,以便将List 2追加到List 1中。
然后调用LINQ Distinct,它将删除重复项(前者或后者)。
This site建议您使用的类,您只需实现IEqualityComparer接口。
非常感谢这个建议,我在修理它后非常好用 – AMH 2012-04-08 13:14:19