【问题标题】:get most frequently used values with linq使用 linq 获取最常用的值
【发布时间】:2014-02-08 21:23:38
【问题描述】:

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

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&lt;entry_adders&gt;,我需要使用 linq 而不是 lambda 的查询。

【问题讨论】:

标签: c# asp.net linq


【解决方案1】:

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

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

【讨论】:

  • 同样,如果你只想返回唯一值,你可以使用类似 return db.entry_adders .GroupBy(q => q.Id).OrderByDescending(g => g.Count()) .Select(g => g.FirstOrDefault()).ToList();
【解决方案2】:
return e.OrderByDescending(d => d.Frequency).ThenByDescending(d => d.CreationTime);

您将方法的返回类型设为IEnumerable&lt;entry_adders&gt;,然后您只需返回entries

【讨论】:

    猜你喜欢
    • 2017-03-06
    • 1970-01-01
    • 2023-03-29
    • 2011-10-07
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    相关资源
    最近更新 更多