GroupBy和OrderBy使用LINQ

时间:2014-04-18 14:09:27

标签: c# linq entity-framework

我使用linq从我的数据库中获取数据。我想在同一个Request上使用GroupBy和OrderBy。

我实际上有这个代码不起作用:

var mydata = _db.table1
    .Join(_db.table2, h => h.col1, t => t.col2, 
        (h, t) => new ActivatedScripts() 
        {
            col1 = h.col1, col2 = h.col2, col3 = (t.col3 == "Y"), col4 = "" 
        })
    .GroupBy(z => z.col1).OrderBy(s => s.....);

OrderBy(s => s...)建议我使用所有LINQ方法和一个着名的KEY,它不匹配我代码中的任何列。

编辑:

我按照官方教程对表格进行排序(http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application)。

当我分组然后排序(我试图排序然后分组)我有一个例外:

enter image description here

2 个答案:

答案 0 :(得分:3)

GroupBy方法返回一组组。您可以轻松地对col1列进行排序,因为这是每个组的Key属性:

.OrderBy(s => s.Key)

如果要对其他任何内容进行排序,则必须从组中的项目中获取该值。例如,如果您知道每个组中的所有项目的值相同,则可以从组中的第一个项目获取值:

.OrderBy(s => s.First().col2)

您还可以使用聚合来使用组中的所有项目计算值,例如对值的总和进行排序:

.OrderBy(s => s.Sum(x => x.col2))

答案 1 :(得分:1)

您可以随时先订购,然后将订购数据分组:

.Join(...).OrderBy(x => x.col1).GroupBy(x => x.col2)