我继承了一些C#代码。我不完全理解类型如何在LINQ的上下文中工作。我有一些看起来像这样的代码:LINQ - GroupBy类型
foreach (var item in Model.Items.GroupBy(i => i.ID))
{ DoStuff(item); }
我试图用更复杂的分组更新此代码。我试图通过ID
和DepartmentID
进行分组。在试图做到这一点,我有:
var items = Model.Items.GroupBy(x => new { i.ID, i.DepartmentID }).OrderBy(i => i.Name).ThenByDescending(i => i.OrderDate);
foreach (var item in items)
{ DoStuff(item); }
当我编译我的代码,我得到的是说,一个编译时错误:
Argument 1: cannot convert from 'System.Linq.IGrouping<<anonymous type:string ID, int DepartmentID>, MyProject.Item>' to 'System.Linq.IGrouping<MyProject.Item>'
从这个错误,我可以告诉大家,我当我做了两个分组时,基本上已经构建了一个新类型。但是,我无法弄清楚如何按照他们的ID
和DepartmentID
对我的物品进行分组,然后仅返回System.Linq.IGrouping<MyProject.Item>
。我怎么做?
我相信你可以缩短,如果你想从新元组(i.ID,i.DepartmentID)到Tuple.Create(i.ID,i.DepartmentID) –
@AlexKrups好点 - 编辑。 – woz