如何在SQL中生成CASE表达式?

时间:2013-06-28 22:10:45

标签: c# sql entity-framework

我有一个相对简单的查询,我不知道如何在EF中表达:

SELECT BrandName,
    CASE BrandName
      WHEN 'LG' THEN 1
      WHEN 'Samsung' THEN 2
      WHEN 'Sony' THEN 3
      ELSE 100
    END as BrandWeight
FROM Brands

基本上我需要返回每个品牌的“重量”品牌列表 - 并且权重在运行时间(以及具有权重的品牌列表)中定义。

请注意,这是一个非常简单的示例。实际上,我们有一个复杂的电子商务网站,其中包含许多遗留代码 - 最近,客户要求添加一个选项来首先显示某些产品 - 基于品牌或其他条件。我们有很多逻辑,我只是​​不想触摸 - 分页,搜索等 - 所以我的想法是将“权重”添加到初始“选择”查询然后按“权重”排序,然后完成其余的工作逻辑。

1 个答案:

答案 0 :(得分:0)

最糟糕的情况:

from s in something
select new 
           {s.BrandName, 
             BrandWeight = s.BrandName == "LG" 
                                             ? 1 : s.BrandName == "Samsung" 
                                             ? 2 : s.BrandName == "Sony" 
                                             ? 3 : 100}

基本上,您可以链接if else,这应该有效,但它“丑陋”