如何将这两个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的优先级,然后获得具有下一个优先级的下一个用户。例如,如果currentUser
的优先级为1,我需要使用优先级== 2的用户。
示例:
letter=new letter {
User=Mark, Priority=1
User=Raha, Priority=2
User=Searah, Priority=3
}
当currentUser为Mark且优先级为1时,我需要获得优先级= 2的用户,在此示例中为Raha!
答案 0 :(得分: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);
您的第一个查询基本上只是插入第二个查询。