1

重複の可能性:
linqクエリを動的に構築する

linq更新クエリを動的に

コードIDを渡すメソッドがあります。たとえば、コード-1の場合はtbl Aからデータを選択し、コード-2の場合はtblBから選択します。

例:私がやろうとしました:しかし、コードは機能しません

 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ラッパーを使用しているようです。この場合、データのソースに条件があるクエリをクレートできない可能性があります。このような場合をクレートする最も簡単な方法は、次のように単純な2つのクエリをクレートすることです。

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側で2つの異なる型を返す三項演算子がある場合は、エラーが発生しやすくなります。これがエラーです。

于 2012-09-10T17:53:36.610 に答える