C#linq动态生成查询

时间:2012-09-10 17:30:06

标签: linq c#-4.0

  

可能重复:
  build linq queries dynamically

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();
 }

如何动态生成查询?

由于

1 个答案:

答案 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方面返回两种不同的类型,这就是错误。