如何在SQL中生成CASE表达式
本文关键字:CASE 表达式 SQL | 更新日期: 2023-09-27 18:20:16
我有一个相对简单的查询,我不知道如何在EF:中表达
SELECT BrandName,
CASE BrandName
WHEN 'LG' THEN 1
WHEN 'Samsung' THEN 2
WHEN 'Sony' THEN 3
ELSE 100
END as BrandWeight
FROM Brands
基本上,我需要返回带有每个品牌"权重"的品牌列表,而权重是在运行时定义的(以及带有权重的品牌列表)。
请注意,这是一个非常简单的例子。事实上,我们有一个复杂的电子商务网站,里面有很多遗留代码,最近客户要求添加一个选项,首先显示某些产品,无论是基于品牌还是其他条件。我们有很多我不想触及的逻辑——分页、搜索等——所以我的想法是将"权重"添加到初始的"Select"查询中,然后按"权重"排序,然后完成其余的逻辑。
最坏情况:
from s in something
select new
{s.BrandName,
BrandWeight = s.BrandName == "LG"
? 1 : s.BrandName == "Samsung"
? 2 : s.BrandName == "Sony"
? 3 : 100}
基本上,您可以链接if else
,这应该可以工作,但它是"丑陋的"