我正在尝试提出一个LINQ查询,该查询将返回具有最多命中的第一行,然后是按日期desc排序的其余行。这可以在SQL中执行,还是需要2个单独的查询?我的表看起来与此类似。
后端:SQL Server 2008
表名:产品
产品编号产品名称点击DateAdded
1 Coffee 600 5/2/2012
2香草800 4/19/2012
3巧克力3000 3/25/2012
4 Oreo 200 2/10/2012
5 Heath 250 5/13/2012
6 Sherbet 550 4/20/2012
7 Mocha 2000 3/22/2012
我希望查询的结果如下:(巧克力优先 - 基于点击,其余 - 按日期降序排列)
3巧克力3000 2012年3月25日
5希斯250 2012年5月13日
1个咖啡600个2012年5月2日
6果子露550 2012/4/20
2香草800 4/19/2012
7摩卡2000 3/22/2012
4奥利奥200 2012年2月10日
非常感谢任何帮助。我是LINQ的新秀。
谢谢!
答案 0 :(得分:1)
int maxHits = Products.Max( p => p.Hits );
var query = Products.OrderByDescending(
p => p.Hits == maxHits ).ThenByDescending( p => p.DateAdded );