1

如何将这两个 LINQ 语句合并为一个?

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为 1,我需要获取优先级 == 2 的用户。

例子:

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

当 currentUser 是优先级 = 1 的标记时,我需要获取优先级 = 2 的用户,在这个示例中 Raha!

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);

您的第一个查询基本上只是插入到第二个查询中。

于 2012-08-16T09:36:20.277 回答