【问题标题】:I'm Having Trouble With a SQL Query in LINQ我在使用 LINQ 中的 SQL 查询时遇到问题
【发布时间】:2012-05-16 17:13:20
【问题描述】:

我正在尝试提出一个 LINQ 查询,它将返回点击次数最多的第一行,然后是按日期 desc 排序的其余行。这可以在 SQL 中完成还是我需要 2 个单独的查询?我的桌子看起来和这个类似。

后端:SQL Server 2008

表名称:产品

ProductID  ProductName  点击次数  添加日期

1 咖啡  600  2012 年 5 月 2 日
2 香草 800 2012 年 4 月 19 日
3 巧克力  3000  2012 年 3 月 25 日
4 奥利奥 200 2012 年 2 月 10 日
5 希思 250 2012 年 5 月 13 日
6 果子露  550  2012 年 4 月 20 日
7 摩卡咖啡 2000 年 3/22/2012

我希望查询结果返回如下:(巧克力优先 - 基于点击,其余 - 按日期降序排列)

3  巧克力  3000  3/25/2012
5  希思  250  2012 年 5 月 13 日
1  咖啡  600   2012 年 5 月 2 日
6  果子露  550  2012 年 4 月 20 日
2  香草    800   2012 年 4 月 19 日
7  摩卡  2000    2012 年 3 月 22 日
4  奥利奥  200  2/10/2012

任何帮助将不胜感激。我是 LINQ 菜鸟。

谢谢!

【问题讨论】:

  • 您将需要两个查询;这两个选择器彼此不同。在没有 LINQ 的情况下,只在数据库中执行,你将如何用一个查询来完成这项工作?
  • 您基本上是在查看两个不同的结果集,因此需要两个不同的查询
  • 我总是想知道(如果数据集足够小)在一次往返数据库中获取所有数据然后在内存中进行额外排序而不是两次访问是否更有意义数据库。我没有真正测试过 - 只是一个想法。

标签: c# asp.net sql sql-server linq


【解决方案1】:
int maxHits = Products.Max( p => p.Hits );

var query = Products.OrderByDescending( 
                p => p.Hits == maxHits ).ThenByDescending( p => p.DateAdded );

【讨论】:

    猜你喜欢
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    相关资源
    最近更新 更多