2009-01-24 6 views
4

Comment faire un cas WHEN dans Linq to SQL (vb.net s'il vous plaît).Linq to SQL Case QUAND dans VB.NET?

Dans SQL, il serait comme ceci:

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

Comment puis-je faire dans LINQ to SQL?

+1

La réponse acceptée est incorrecte, car elle ne correspond pas à la langue spécifiée dans le titre de la question –

Répondre

4

Check This Out

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

CaseResult = (

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

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

"Unknown Case") 

}; 

S'il vous plaît noter que [? Symbole = alors], [: Symbole = Ou].

+0

EXCELLENT! Merci pour la mise à jour! – EdenMachine

+8

Cela ne fonctionnera pas dans VB.NET. Besoin d'utiliser If (cond, true, false) – Robert4Real

3

Je n'ai pas essayé mais vous pouvez être en mesure de faire quelque chose comme:

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")) 

Vous aurait juste besoin de garder l'imbrication des fonctions Si pour gérer toutes vos affaires.

Vous pouvez trouver d'autres exemples de diverses requêtes à http://msdn.microsoft.com/en-us/library/bb386913.aspx

+0

Merci! Je suppose que cela devra faire. – EdenMachine

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

Cette réponse est bien meilleure si l'on considère la question d'origine spécifiquement demandée VB et la syntaxe C# acceptée est assez différente. Considérant -1 sur la réponse acceptée ... – pseudocoder