动态LINQ select子句

动态LINQ select子句,linq,select,if-statement,linq-to-sql,dynamic-linq,Linq,Select,If Statement,Linq To Sql,Dynamic Linq,我在应用程序中使用动态LINQ到SQL和对象。我在谷歌上搜索了一个类似于sql案例的解决方案,如下面的一个 SELECT case when [var] = 'Foo' then 'A' when [var] = 'Bar' then 'B' end FROM [db].[dbo].[Table] WHERE 1=1 If已经尝试了If(条件,真,假)如下,但没有成功 var query = db.Table.AsQueryable().Where("1==1") .Select("new(I

我在应用程序中使用动态LINQ到SQL和对象。我在谷歌上搜索了一个类似于sql案例的解决方案,如下面的一个

SELECT case when [var] = 'Foo' then 'A' when [var] = 'Bar' then 'B' end
FROM [db].[dbo].[Table]
WHERE 1=1
If已经尝试了If(条件,真,假)如下,但没有成功

var query = db.Table.AsQueryable().Where("1==1")
.Select("new(IF(var==\"Foo\",\"A\",\"B\") as TestVar)");

有什么建议吗?

我不确定,但我认为您应该尝试以下方法:

var query = db.Table.AsQueryable().Where("1==1")
.Select("new(var==\"Foo\" ? \"A\" : var==\"Bar\" ? \"B\" : null as TestVar)");

我不知道在动态LINQ中转义字符串的规则是什么,但它应该为您指明正确的方向。

这可能有效。我尝试了以下方法:var query=db.Budget.AsQueryable()。其中(“BudgetID==4或BudgetID==3”)。选择(“new(BudgetID==3?3:4)作为TestVar”);它抱怨“附加信息:表达式缺少一个'as'子句”,尽管:/@JohanLarsson我已经编辑了我的answear。我认为您应该将“)”移到后面,因为TestVar现在工作正常。谢谢:)
var query=db.Budget.AsQueryable()。其中(“BudgetID==4或BudgetID==3”)。选择(“新建(说明==\“Budget 2013\”?\“its 2k13\”:说明==“Budget 2014\”?\“its 2k14\”:空为TestVar)”