1

可能重复:
动态构建 linq 查询

linq 动态更新查询

我有一个传递代码 id 的方法,例如如果代码 - 1 然后我从 tbl A 中选择数据,如果代码 - 2 我想从 tbl B 中选择

例如我试图做:但代码不起作用

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

如何动态生成查询?

谢谢

4

1 回答 1

1

您的问题并不明显,但听起来您在数据库访问中使用了一些 linq 包装器。如果是这种情况,那么您很可能无法创建具有数据源条件的查询。创建这样的 if 最简单的方法是创建两个这样简单的查询:

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 to sql,所以上面的立场。但是你的错误更容易,因为你有三元运算符,它在真假一侧返回两种不同的类型,这就是错误。

于 2012-09-10T17:53:36.610 回答