2个数组为1,lambda exp不同

tho*_*yer 0 c# lambda

我有两个从数据库中获取的对象数组,有些重叠,所以我必须制作一个独特的函数.

我试图制作一个lambda表达式,但我仍然有一个重叠的对象.

这是我的代码:

ArtObject[] pinui = new ArtObject[root.Count - 1];
ArtObject[] c1=     new ArtObject[root2.Count - 1];

pinui = getArticlesArray(root2, pinui);
c1= getArticlesArray(root, c1);

art = new ArtObject[c1.Count()+pinui.Count()];

pinui.CopyTo(art, 0);
c1.CopyTo(art, pinui.Count());

art = art.Distinct().OrderByDescending(a => a.dateTosort).ToArray();
Run Code Online (Sandbox Code Playgroud)

我觉得我的最后一行出了问题,art = art.Distinct().OrderByDescending(a => a.dateTosort).ToArray();我想知道什么,怎么才能得到不同的对象..?

Jon*_*eet 5

Distinct将使用EqualsGetHashCode确定相等的值.我怀疑你没有覆盖这些方法来表明你希望如何检查相等性.

另请注意,您的最后一部分将更简单:

ArtObject[] art = pinui.Union(c1).OrderByDescending(a => a.dateTosort).ToArray();
Run Code Online (Sandbox Code Playgroud)

a.Union(b)相当于a.Concat(b).Distinct().

一种替代覆盖GetHashCodeEquals是指定的IEqualityComparer<Person>,以任一UnionDistinct.

使用DistinctBy方法,MoreLINQ使这更容易:

var query = collection.DistinctBy(x => x.Description);
Run Code Online (Sandbox Code Playgroud)

(目前还没有相应的Union,但我们可以轻松添加一个.)