我坚信这会在我看到答案时让我一巴掌,但是这里...

假设我需要某个供应商提供的所有产品的列表,但是它们需要按顶部和下方的特定变量productType进行订购,这并不重要,但是所有产品都必须在列表中。

所以基本上

SELECT * FROM Products p WHERE p.VendorID = 1 AND p.ProductType = 'widget'


作为要显示的第一行。然后,

SELECT * FROM Products p WHERE p.VendorID = 1 AND p.ProductType <> 'widget'


在那下面。

我正在使用LINQ,如果有帮助,但我什至无法在常规SQL查询中获得它

最佳答案

在Sql中:

SELECT *
FROM Products p
WHERE p.VendorID = 1
ORDER BY CASE WHEN p.ProductType = 'widget' THEN 1 ElSE 2 END


在Linq中:

IQueryable<Product> query =
  from p in dc.Products
  where p.VendorID == 1
  orderby p.ProductType == "widget" ? 1 : 2
  select p;

10-08 14:29