2014-01-13 44 views
0

我对LINQ查询有一个小问题来分组和排序我的数据表。我在一个带有datagrid控件的winforms 3.5项目(我知道这不是一个非常有用的控件,但我没有选择改变:(...不幸的是)...LINQ C#组和订单

所以,我怎样才能使这个自定义订购与LINQ

例如:

Name | Age | 
Test  38 
Test-1 20 
Test-2 18 
Test2 40 
Test2-1 24 
Test2-2 16 

排序按年龄,降

Name | Age | 
Test2 40 
Test2-1 24 
Test2-2 16 
Test  38 
Test-1 20 
Test-2 18 
保持名称的层次

为例排序

我需要把这个查询重新绑定到数据表中以重新绑定我的数据网格!

+0

你应该能够创建您自己的比较函数 - 请参阅http://stackoverflow.com/questions/985657/use-own-icomparert-with-linq-orderby – tofutim

+0

实际数据在数据库中的外观如何?这个例子并不清楚。 – Servy

+0

@tofutim这不是对象的linq,它查询数据库。 – Servy

回答

0

终于让我找到一个解决方案只需...

var query = myDataTable.AsEnumerable() 
    .OrderByDesending(x => x.Field<type>("columnName")) 
    .GroupBy(x => x.Field<type>'columnName").Substring(0,lenght) 
    .SelectMany(x => x).CopyToDataTable(); 

    DataView.Table = query; 
    DataView.Table.AcceptChange(); 

我不知道我的最后的的SelectMany(X => x),但是它似乎工作