如何使用Linq按分组和按结果排序

如何使用Linq按分组和按结果排序,linq,group-by,sql-order-by,Linq,Group By,Sql Order By,我有日期时间值(例如12/01/2010 10:10:222…)如何按描述顺序显示年份?例如,2011年、2010年、2009年、2008年等。。我需要按字段的年份部分分组并返回该字段。我实际上需要返回年份和名称。我需要使用其他功能的名称,这就是为什么我需要2个值 感谢您的帮助……我将使用Distinct和OrderByDescending扩展名: var years = IQueryableObject .Distinct(x => x.Year).Or

我有日期时间值(例如12/01/2010 10:10:222…)如何按描述顺序显示年份?例如,2011年、2010年、2009年、2008年等。。我需要按字段的年份部分分组并返回该字段。我实际上需要返回年份和名称。我需要使用其他功能的名称,这就是为什么我需要2个值


感谢您的帮助……

我将使用Distinct和OrderByDescending扩展名:

var years = IQueryableObject
                 .Distinct(x => x.Year).OrderByDescending(x => x.Year).ToList();

我将使用Distinct和OrderByDescending扩展:

var years = IQueryableObject
                 .Distinct(x => x.Year).OrderByDescending(x => x.Year).ToList();

你的意思还不太清楚,但你可能只是想知道:

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);

你的意思还不太清楚,但你可能只是想知道:

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不接受一个参数,该参数说明如何使其与众不同,因此它不会编译。这对我有效:var sortedList=(从newsPressReleaseGenericList orderby p.ReleaseDate.Year中的p开始,按p.ReleaseDate.Year降序选择new{ReleaseDate=p.ReleaseDate.Year});Distinct不接受一个参数,该参数说明如何使其与众不同,因此它不会编译。这对我有效:var sortedList=(从newsPressReleaseGenericList orderby p.ReleaseDate.Year中的p开始,按p.ReleaseDate.Year降序选择new{ReleaseDate=p.ReleaseDate.Year});你说的“返回年份和名称”是什么意思?如果多个条目的名称相同怎么办?返回年份和名称是什么意思?如果多个条目具有相同的名称怎么办?