Sto usando Dynamic LINQ to SQL e anche per oggetti nella mia applicazione. Ho cercato su Google una soluzione simile a un caso sql, come quello qui sotto.
SELECT case when [var] = 'Foo' then 'A' when [var] = 'Bar' then 'B' end
FROM [db].[dbo].[Table]
WHERE 1=1
Se ho provato con IF (condizione, vero, falso) come il seguente ma senza successo.
var query = db.Table.AsQueryable().Where("1==1")
.Select("new(IF(var==\"Foo\",\"A\",\"B\") as TestVar)");
Qualche puntatore?
Non sono sicuro, ma penso che dovresti provare quanto segue:
var query = db.Table.AsQueryable().Where("1==1")
.Select("new(var==\"Foo\" ? \"A\" : var==\"Bar\" ? \"B\" : null as TestVar)");
Non so quali sono le regole per sfuggire alla stringa in LINQ dinamico, ma dovrebbe indirizzarti nella giusta direzione.