2017-03-02 8 views
1

かなり長い連鎖の最後でオブジェクトのリストを選択しようとしています/ Lambda式として書かれたエンティティにLinqを使用して選択しています...現在以下の2つのステートメントがあります。私がやりたい何Lambda式と複数の条件を使用するエンティティへのLinq

var formDefId = _unitOfWork.AsQueryableFor<FormTrack>() 
     .Where(x => x.FormTrackId == formTrackId) 
     .Select(x => x.FormDefId).First(); 

    var rules = _unitOfWork.AsQueryableFor<FormTrack>() 
     .Where(x => x.FormTrackId == formTrackId) 
     .Select(x => x.FormDef) 
     .SelectMany(x => x.Events 
      .Where(y => y.EventTypeId == 7)) 
     .Select(x => x.RuleGroup) 
     .SelectMany(x => x.Rules) 
     .SelectMany(x => x.RuleFormXmls 
      .Where(y => y.FormDefId == formDefId)); 

、代わりに別のクエリからformDefIdを使用することの最後のwhere句に

.Select(x => x.FormDef) 

によって返された2つのクエリを結合し、そしてFormDefIdを使用しています。

これは可能ですか?

は各 fromクエリでの構文は、ラムダ構文で SelectManyに対応し...この使用してクエリ構文を記述する方がはるかに簡単です、あなたの助け

答えて

0

のために事前にありがとうございます。これにより、すべての変数をスコープに含めることができます。

var rules = 
    from ft in _unitOfWork.AsQueryableFor<FormTrack>() 
    from e in ft.FormDef.Events 
    from r in e.RuleGroup.Rules 
    from x in r.RuleFormXmls 
    where ft.FormTrackId == formTrackId 
    where e.EventTypeId == 7 
    where x.FormDefId == ft.FormDefId 
    select x 
+0

これは、ありがとうございました! –

関連する問題