J'utilise Dynamic LINQ to SQL et également avec des objets dans mon application. J'ai recherché une solution similaire à un cas sql, comme celle ci-dessous.
SELECT case when [var] = 'Foo' then 'A' when [var] = 'Bar' then 'B' end
FROM [db].[dbo].[Table]
WHERE 1=1
Si j'ai essayé avec IF (condition, vrai, faux) comme ci-dessous mais sans succès.
var query = db.Table.AsQueryable().Where("1==1")
.Select("new(IF(var==\"Foo\",\"A\",\"B\") as TestVar)");
Des pointeurs?
Je ne suis pas sûr, mais je pense que vous devriez essayer ce qui suit:
var query = db.Table.AsQueryable().Where("1==1")
.Select("new(var==\"Foo\" ? \"A\" : var==\"Bar\" ? \"B\" : null as TestVar)");
Je ne sais pas quelles sont les règles pour échapper une chaîne dans LINQ dynamique, mais cela devrait vous orienter dans la bonne direction.