VB.NET中的Linq to SQL Case WHEN语句?

4

如何在Linq to SQL中使用Case WHEN语句(请使用vb.net)。

在SQL中,它会像这样:

SELECT 
CASE
  WHEN condition THEN trueresult
  [...n]
[ELSE elseresult]
END

我该如何在Linq to SQL中实现这个功能?


1
被接受的答案是错误的,因为它与问题标题指定的语言不匹配。 - Brian Webster
3个回答

11
var data = from d in db.tb select new {

CaseResult = If (d.Col1 = “Case1”, "Case 1 Rised", If (d.Col1 = “Case2”, "Case 2 Rised", "Unknown Case"))

};

2
考虑到原问题明确要求VB,而被接受的C#语法相当不同,因此这个答案要好得多。考虑将已接受的答案评为-1... - pseudocoder

4

看这个

var data = from d in db.tb select new {

 CaseResult = (

 d.Col1 == “Case1” ? "Case 1 Rised" :

 d.Col1 == “Case2” ? "Case 2 Rised" :

 "Unknown Case")

 };

请注意,[ ? 符号 = then ],[ : 符号 = 或 ].

9
在 VB.NET 中那样做行不通,需要使用 If(cond, true, false)。 - Robert4Real

3

我没有尝试过,但你可以尝试类似下面这样的操作:

Dim query = From tbl In db.Table _
            Select result =_
                If(tbl.Col1 < tbl.Col2,"Less than",_
                    If(tbl.Col1 = tbl.Col2,"Equal to","Greater than"))

你只需要将If函数嵌套处理所有情况。
你可以在http://msdn.microsoft.com/en-us/library/bb386913.aspx找到更多各种查询的示例。

谢谢!我想这就是唯一的选择了。 - RichC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接