以前的问题here
我用过
var distinctAllEvaluationLicenses = allEvaluationLicenses.GroupBy((License => License.dateCreated)).OrderByDescending(lics => lics.Key).First();
分组IQueryable
allEvaluationLicenses
使用许可证的属性1,即'dateCreated'
但是现在,我如何通过使用'nLicenceID'等其他属性来订购它们?
是否可以做这样的事情:
var distinctAllEvaluationLicenses = allEvaluationLicenses.GroupBy((License => License.dateCreated)).OrderByDescending(lics => (sort by nLicenseID here) ).First();
答案 0 :(得分:0)
对于LINQ-to-Objects,每个组中的 对象保留了发现它们的顺序:
根据生成每个
IGrouping<TKey, TElement>
的第一个键的源中元素的顺序,按顺序生成IGrouping<TKey, TElement>
个对象。分组中的元素按它们在源中出现的顺序产生。
所以:如果您的目标是订购每个组的内容,只需订购来源:
var distinctAllEvaluationLicenses = allEvaluationLicenses
.OrderByDescending({whatever})
.GroupBy({etc}).First();
请注意,这不能保证适用于其他LINQ源,并注意它不会影响组的显示顺序。要做到这一点,你可能会做类似的事情:
var distinctAllEvaluationLicenses = allEvaluationLicenses
.GroupBy({etc}).
.OrderBy(grp => grp.Min(item => x.SomeProp)).First();
将按照每个中最小SomeProp
的顺序显示组。显然,必要时调整到max / etc。
答案 1 :(得分:0)
要对组中的项目进行排序,您可以使用Select
:
var distinctAllEvaluationLicenses = allEvaluationLicenses.GroupBy(License => License.dateCreated)
.Select(group => group.OrderByDescending(item => item.nLicenceID));