我使用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)。
当我分组然后排序(我试图排序然后分组)我有一个例外:
答案 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)