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查询。

+0

你能赶上与管理演播室SQL事件探查器工具的QRY。它将显示完整的tsql代码,甚至通过linq qry与数据库引擎一起使用。 – Deadsheep39

如果我理解你的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获取其他详细信息。