0
在我的实体中,我有4列A,B,C,D,如果我想要所有的列上有不同的D,我该怎么做Linq
? 例如:当我有2列以上时,我怎样才能清楚?
Col A =1 Col B=2 Col C=3 Col D=4
Col A =1 Col B=2 Col C=9 Col D=4
现在,当我在山口d做不同的我想要显示的记录中的任何一个不能同时使用。 有没有办法做到这一点Linq
我不想使用循环语句来做到这一点。
在我的实体中,我有4列A,B,C,D,如果我想要所有的列上有不同的D,我该怎么做Linq
? 例如:当我有2列以上时,我怎样才能清楚?
Col A =1 Col B=2 Col C=3 Col D=4
Col A =1 Col B=2 Col C=9 Col D=4
现在,当我在山口d做不同的我想要显示的记录中的任何一个不能同时使用。 有没有办法做到这一点Linq
我不想使用循环语句来做到这一点。
void Main()
{
//Your provided sample data
IEnumerable<Item> data = new Item[]
{
new Item{ A = 1, B = 2, C = 3, D = 4 },
new Item{ A = 1, B = 2, C = 9, D = 4 },
};
//Create a custom comparer for distinct'ing
CustomComparer comparer = new CustomComparer();
//Use the overload for distinct
IEnumerable<Item> distinctData = data.Distinct(comparer);
//Now we have a distinct list according to your comparer
foreach (var element in distinctData)
{
Console.WriteLine(element.C.ToString()); // => 3
}
}
//sample class that holds your data
class Item
{
public int A { get; set; }
public int B { get; set; }
public int C { get; set; }
public int D { get; set; }
}
class CustomComparer : IEqualityComparer<Item>
{
public bool Equals(Item x, Item y)
{
return x.D == y.D;
}
public int GetHashCode(Item obj)
{
return obj.D;
}
}
你确定你不想写一个简单的循环:-)
你能不能组列表用'D',然后做一个'。首先()'就可以了? –
你如何决定采取哪条记录?有没有任何标准,或者你真的只是想随机选择其中一个? – goric
http://stackoverflow.com/questions/1606679/remove-duplicates-in-the-list-using-linq/1606686#1606686 –