使用linq获取最常用的值

时间:2014-02-08 21:23:38

标签: c# asp.net linq

我在数据库中有项目,例如:

id | item_id | title
1  |    1    |  abc
2  |    3    |  abcd
3  |    1    |  abc
4  |    1    |  abc
5  |    3    |  abcd
6  |    2    |  abcde

我想要的是大多数使用值的订单 并且最常用的值必须按date_created

排序
id | item_id | title
1  |    1    |  abc
3  |    1    |  abc
4  |    1    |  abc
2  |    3    |  abcd
5  |    3    |  abcd
6  |    2    |  abcde

我到目前为止所尝试的是

public static ICollection<entry_adders> CallEntries()
{
    using (entry_MainEntities db = new entry_MainEntities())
    {
        var entries = db.entry_adders
            .GroupBy(q => q.item_id)
            .OrderByDescending(gp => gp.Count())
            .Select(g => g.Key).ToList() ;

         return ??
     }
}

但我不知道如何将其返回ICollection<entry_adders>,我需要使用linq而不是lambda进行此查询。

2 个答案:

答案 0 :(得分:3)

我认为您需要像SelectMany这样使用:

return db.entry_adders
         .GroupBy(q => q.item_id)
         .OrderByDescending(gp => gp.Count())
         .SelectMany(g=>g).ToList();

答案 1 :(得分:2)

return e.OrderByDescending(d => d.Frequency).ThenByDescending(d => d.CreationTime);

您创建方法IEnumerable<entry_adders>的返回类型,然后返回entries