1

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

后端:SQL Server 2008

表名称:产品

产品ID 产品名称 命中日期 添加

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 2012 年 3 月 22 日

我希望查询的结果可以这样返回:(巧克力首先 - 基于点击,其余 - 按日期降序排列)

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

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

谢谢!

4

1 回答 1

1
int maxHits = Products.Max( p => p.Hits );

var query = Products.OrderByDescending( 
                p => p.Hits == maxHits ).ThenByDescending( p => p.DateAdded );
于 2012-05-16T17:24:55.777 回答