1

これら 2 つの LINQ ステートメントを 1 つに結合するにはどうすればよいですか?

var Priority = repository.GetMany<Letter>(l => l.UserID == currentUser.ID)
                         .Select(l => l.Priority)
                         .FirstOrDefault();
var User = repository.GetMany<Letter>(l => l.Priority > Priority)
                     .Select(l => l.User)
                     .FirstOrDefault();

currentUser の優先度を取得してから、次の優先度を持つ次のユーザーを取得する必要があります。たとえば、優先度currentUserが 1 の場合、優先度 == 2 のユーザーを取得する必要があります。

例:

letter=new letter { 
    User=Mark, Priority=1
    User=Raha, Priority=2
    User=Searah, Priority=3
}

currentUser が Priority=1 の Mark の場合、このサンプル Raha! では、Priority=2 のユーザーを取得する必要があります。

4

1 に答える 1

0

あなたの GetMany が実際に Where 呼び出しであり、したがって IQueryable を返すと仮定すると、次のようにしてうまくいくはずです。

var users = repository
    .GetMany<Letter>(l => l.Priority > (
        repository.GetMany<Letter>(
            l2 => l2.UserID = currentUser.ID
        )
        .Select(l2 => l2.Priority)
        .First()
    )
    .OrderBy(l => l.Priority)
    .Select(l => l.User)
    .Take(1);

最初のクエリは、基本的に 2 番目のクエリに挿入されるだけです。

于 2012-08-16T09:36:20.277 に答える