2011-10-16 45 views
0

我已经有一个包含一些组的变量。我使用以下LINQ查询生成该表:正在进行/修改LINQ查询

var historyGroups = from payee in list 
           group payee by payee.Payee.Name into groups 
           orderby groups.Key         
           select new {PayeeName = groups.Key, List = groups }; 

现在我的historyGroups变量可以包含很多组。这些组中的每个组都有一个键,它是一个字符串,结果视图按照该键排序。现在每个组中都有一个对应于密钥的列表。里面有列表有元素和每个元素是一个特定类型的对象。其中一个字段是System.DateTime类型。我想按日期排序内部列表

任何人都可以帮忙吗?可能会修改上述查询或变量historyGroups上的新查询。

感谢

回答

1

这是我不太清楚,你要作为排序依据是什么(收款人类型定义缺失以及)

var historyGroups = from payee in list 
    group payee by payee.Payee.Name into groups 
    orderby groups.Key         
    select new { 
     PayeeName = groups.Key, 
     List = groups.OrderBy(payee2 => payee2.SomeDateTimeField) 
    }; 

是最直接的。

如果您真的只想按日期排序(而不是时间),请使用SomeDateTimeField.Date

在那个List里面有元素,每个元素都是特定类型的对象。其中它的字段类型为System.DateTime的

这导致的我也许(?)犯罪嫌疑人

List = groups.OrderBy(payee2 => payee2.ParticularTypedElement.DateTimeField) 

或者甚至

List = groups.OrderBy(payee2 => payee2.ObjectsOfParticularType 
     .OfType<DateTime>() 
     .FirstOrDefault() 
) 

我希望下次可以clarfy的问题好一点,所以我们不必猜得那么多(并提出一个令人困惑的答案)

+0

谢谢你的时间和帮助。但为什么orderby groups.key是多余的?我想通过payee.Payee.Name排序组的最终列表!其次,列表包含对象列表。该对象的其中一个字段是Date。此列表还包含收款人对象。谢谢。 – VVV

+0

@VVV:你的订单是正确的:GroupBy默认不排序。 (固定)。我认为我的回答概述了您需要的所有技术。如果您更新问题并显示您正在使用的类型,我可以更新答案以解决明确的问题。直到那时,祝你好运! – sehe

+0

谢谢sehe!其实我是LINQ初学者!但是你的第一个查询(带有lambda的查询)解决了这个问题。是的,其实这些对象中的每一个都包含多个字段,每个字段也是一个对象。这就是为什么我的措辞造成混乱。但是,谢谢你的帮助。问题解决了 :-) – VVV