【问题标题】:Linq to SQL Case WHEN in VB.NET?Linq to SQL Case 何时在 VB.NET 中?
【发布时间】:2009-01-24 19:32:45
【问题描述】:

我如何在 Linq to SQL 中做一个案例(请使用 vb.net)。

在 SQL 中应该是这样的:

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

我将如何在 Linq to SQL 中执行此操作?

【问题讨论】:

  • 接受的答案不正确,因为它与问题标题中指定的语言不匹配

标签: sql linq linq-to-sql tsql


【解决方案1】:
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"))

};

【讨论】:

  • 考虑到原始问题特别要求 VB 和接受的 C# 语法完全不同,这个答案要好得多。在接受的答案上考虑 -1...
【解决方案2】:

看看这个

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

 CaseResult = (

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

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

 "Unknown Case")

 };

请注意 [ ? Symbol = then] , [ : Symbol = Or]。

【讨论】:

  • 这在 VB.NET 中不起作用。需要使用 If(cond, true, false)
【解决方案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找到更多各种查询示例

【讨论】:

  • 谢谢!我想这将不得不这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多