我有一个相对简单的查询,我不知道如何在EF中表达:
SELECT BrandName,
CASE BrandName
WHEN 'LG' THEN 1
WHEN 'Samsung' THEN 2
WHEN 'Sony' THEN 3
ELSE 100
END as BrandWeight
FROM Brands
基本上我需要返回每个品牌的“重量”品牌列表 - 并且权重在运行时间(以及具有权重的品牌列表)中定义。
请注意,这是一个非常简单的示例。实际上,我们有一个复杂的电子商务网站,其中包含许多遗留代码 - 最近,客户要求添加一个选项来首先显示某些产品 - 基于品牌或其他条件。我们有很多逻辑,我只是不想触摸 - 分页,搜索等 - 所以我的想法是将“权重”添加到初始“选择”查询然后按“权重”排序,然后完成其余的工作逻辑。
答案 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
,这应该有效,但它“丑陋”