我如何使用Linq来对Group by和Order by进行排序

问题描述

|| 我有日期时间值(例如12/01/2010 10:10:222 ..)如何按降序仅显示年份?例如,2011、2010、2009、2008等。我需要按字段的年份部分进行分组,然后将其返回。我实际上需要返回年份和名称。我需要将该名称用于其他功能,这就是为什么我需要2个值的原因。 谢谢你的帮助...     

解决方法

        目前尚不清楚您的意思,但您可能只想要以下内容:
var query = collection.GroupBy(record => record.DateProperty.Year)
                      .OrderBy(group => group.Key);
如果这不是您想要的,请提供更多详细信息-理想情况下,请提供一些示例输入和所需的输出。 如果您只希望每个组中的一个条目,并且很乐意采用任何一个条目来获取名称,并且只希望年份,则可以执行以下操作:
var query = collection.GroupBy(record => record.DateProperty.Year)
                      .Select(g => new { Year = g.Key,Name = g.First().Name })
                      .OrderBy(x => x.Year);
    ,        我将使用Distinct和OrderByDescending扩展:
var years = IQueryableObject
                 .Distinct(x => x.Year).OrderByDescending(x => x.Year).ToList();