7

私はIQueryable、ラムダ式、および一般的なLINQの初心者です。次のようなwhere句にサブクエリを配置したいと思います。

サンプルコード:

SELECT * FROM CLIENT c WHERE c.ETAT IN (
 SELECT DDV_COLUMN_VAL FROM DATA_DICT_VAL
 WHERE TBI_TABLE_NAME = 'CLIENT' AND DD_COLUMN_NAME = 'STATUS'
           AND DDV_COLUMN_VAL_LANG_DSC_1 LIKE ('ac%'))

これをLINQで翻訳するにはどうすればよいですか?

4

4 に答える 4

14
var innerquery = from x in context.DataDictVal
                 where x.TbiTableName == myTableNameVariable
                    && x.DdColumnName == "Status"
                    && x.DdbColumnValLangDsc1.StartsWith("ac")
                 select x.DdvColumnVal;

var query = from c in context.Client
            where innerquery.Contains(c.Etat)
            select c;
于 2010-08-13T14:47:20.920 に答える
4
from c in db.Client
where (from d in db.DataDictVal 
       where d.TblTableName == "Client" 
         && d.DDColumnName == "Status"
         && dd.DdvColumnValLandDsc1.StartsWith("ac"))
       .Contains(c.Etat)
select c;
于 2010-08-13T14:44:42.917 に答える
1

Linqを初めて使用する場合は、2つの重要なツールが絶対に必要です。1つ目は、ほとんどのT-SQLステートメントをLinqer(http://www.sqltolinq.com/)と呼ばれるLinqに変換するツールです。これにより、質問のクエリが処理されます。もう1つのツールはLinqPad(http://www.linqpad.net/)です。これは、クエリを練習しながらLinqを学ぶのに役立ちます。

私はよくLinqerを使用してT-SQLクエリを変換し、LinqPadを使用して微調整します。

于 2010-08-13T14:44:36.370 に答える
0

Linqメソッド構文を使用した同じ例:

var innerquery =  dbcontext.DataDictVal                  
                 .where(x=> x.TbiTableName == myTableNameVariable
                    && x.DdColumnName == "Status"
                    && x.DdbColumnValLangDsc1.StartsWith("ac"))
                 .select(x=>x.DdvColumnVal)

var query = dbcontext.Client
            .where( c=>innerquery.Contains(c.Etat))

ノート:

答えを検索したときに、メソッド構文で同じ概念を説明する答えがあまり見つからなかったため、この答えを提供しています。

ですから、将来的には、今日の私のようなメソッド構文を腸で検索した人々にとって役立つかもしれません。ありがとうkarthik

于 2017-05-17T11:40:48.590 に答える