Mssql中ORDER BY条件
问题描述:
我要让LINQ查询到SQL查询Mssql中ORDER BY条件
我的LINQ查询就是这样
var query3 = from p in _productRepository.Table
join bs in query2 on p.Id equals bs.ProductId
orderby p.ProductTags.Count(y=>y.Id==locationId)>0
select p;
如何实现这个p.ProductTags.Count(Y =>年。 ID == locationId)> 0在SQL查询。
答
如果我理解你的LINQ查询正在做什么,它将排序所有在ProductTags
中的相关计数大于0的那些,然后是其余的,但不按计数排序。在这种情况下,在下面的查询ORDER BY
是相似的:
Select p.*
From ProductRepository As p
Join <query2> As bs On p.ID = bs.ID
Order By Case When (
Select Count(*)
From ProductTags As y
Where y.ProductID = p.ID
And y.ID = @locationID) > 0 Then 1 Else 0 End;
答
SELECT productRepository.Id FROM _productRepository.Table
JOIN *secondtable*
WHERE productRepository.Id= *secondtable*.ProductId
AND productRepository.Id = locationId
Group By by productRepository.Id
Having Count(*) > 0
ORDER BY COUNT(*)
从Id获取其他详细信息。
你能赶上与管理演播室SQL事件探查器工具的QRY。它将显示完整的tsql代码,甚至通过linq qry与数据库引擎一起使用。 – Deadsheep39