linq动态更新查询
我有一个传递代码ID的方法,例如如果代码 - 1然后我从tbl A中选择数据,如果代码 - 2我想从tbl B中选择
e.g。我试图这样做:但代码不起作用
public static void Update(int code, int userid)
{
var query =
(from t1 in code == 1? dataContext.tb1 : dataContext.tb2
where t1.Id == userid
select t1).SingleOrDefault();
}
如何动态生成查询?
由于
答案 0 :(得分:1)
从您的问题来看并不明显,但听起来您在数据库访问中使用了一些linq包装器。如果是这种情况,那么很可能您不能创建具有数据源条件的查询。创造这种情况的最简单方法是创建两个简单的查询:
public static void Update(int code, int userid)
{
SomeType result;
if(code == 1)
{
result =
(from t1 in dataContext.tb1
where t1.Id == userid
select t1).SingleOrDefault();
}
else
{
result =
(from t1 in dataContext.tb2
where t1.Id == userid
select t1).SingleOrDefault();
}
// and do something with result
}
修改强>
现在显然你正在使用linq到sql,所以上面的代表。但是你的错误比你有三元运算符更容易,它在true和false方面返回两种不同的类型,这就是错误。