我有个疑问
var QP = (from a in QProductAllInfo select new { a.Id, a.Title, a.FullTitle}).Distinct();结果是:
我需要结果:
发布于 2012-04-03 13:08:44
假设不同的Ids总是不同的,那么您可以尝试这样做。
我可能会把它写成两个查询。这样,调试就容易了,可读性也更强。您可以使用MoreLinq。
var temp = from a in QProductAllInfo select new { a.Id, a.Title, a.FullTitle}.ToList();
var result = temp.DistinctBy(i => i.Id);您也可以使用
Var result = temp.GroupBy(x => x.Id).Select(y => y.First());发布于 2012-04-03 13:26:52
如果您在QProductAllInfo中有重复的代码,用它替换您的代码会解决您的问题。
var QP = from a in QProductAllInfo.Distinct()
select new { a.Id, a.Title, a.FullTitle };如果这不起作用,可以使用元组而不是匿名类型,如下所示:
var QP = from a in QProductAllInfo
select Tuple.Create(a.Id, a.Title, a.FullTitle);在匿名类型上应用不同的操作符是无用的,因为匿名类型始终是donc实现IEquatable接口的引用类型。
发布于 2012-04-03 11:20:07
您可以实现一个IEqualitycomparer,.Distinct使用它来确定该项是否已经存在于列表中。它可以在属性上进行比较,而不是对同一个对象的引用进行比较。
但我不知道它是否适用于匿名类型。
https://stackoverflow.com/questions/9992117
复制相似问题