1

現在、以下に示す複数レベルの述語が機能しています...

var predicate = PredicateBuilder.New<Patient>();
foreach (var code in codeArray) // ect..["AB12", "W231", "Q213"]
{
    string localCode = code;
    predicate.Or(p => p.Requests.Any(
        u => u.Records.Any(
            t => t.OutgoingRecords.Any(
                s => s.Code == localCode)
            )
        )
    );
}

res = query.AsExpandable().Where(predicate); 
// Query is built up from an outside source and is eventually turned into a list via .ToListAsync()

私が知っている限り、それが次の形式でクエリを生成していることを除いて、これは問題ありません...

query =  p => p.PatientEpisodes.Any(u => u.EpisodeGroupings.Any(t => t.EpisodeDiagnoses.Any(s => s.Code == 'AB12'))) ||
              p.PatientEpisodes.Any(u => u.EpisodeGroupings.Any(t => t.EpisodeDiagnoses.Any(s => s.Code == 'W231'))) ||
              p.PatientEpisodes.Any(u => u.EpisodeGroupings.Any(t => t.EpisodeDiagnoses.Any(s => s.Code == 'Q213')))

私が実際に作成する必要があるのは...

query =  p => p.PatientEpisodes.Any(u => u.EpisodeGroupings.Any(t => t.EpisodeDiagnoses.Any(s => s.Code == 'AB12' || s.Code == 'W312' || s.Code == 'Q213'))) 

以下のようなクエリのサブレベルで述語を挿入する方法はありますか? 私の現在の試みは、これまでのところ失敗しています。

var predicate = PredicateBuilder.New<RecordCode>();
foreach (var code in codeArray)
{
    string localCode = code;
    predicate.Or(p => p.Code == localCode);
}

query = query.AsExpandable().Where(
    s => s.Requests.Any(
        c => c.Records.Any(
            d => d.OutgoingRecords.Any(predicate))));

よろしくお願いします。

4

0 に答える 0