我继承的基本架构(没有外键):
Tasks (TaskID, Description, ElementID, UserID)
Elements (ElementID, Description)
Users (UserID, FirstName, LastName)
我需要订购List<Task>
,首先是Element.Description
,然后是User.FirstName
,然后是User.LastName
到目前为止,我已经通过Element.Description
使用以下内容进行了订购:
List<Task> tasks = db.Tasks.ToList();
List<Element> elements = db.Elements.ToList();
List<User> users = db.Users.ToList();
tasks = tasks.Join(elements,
t => t.ElementID,
e => e.ElementID,
(t, e) => new { t, e })
.OrderBy(m => m.e.Description)
.Select(m => m.t).ToList();
如何与多个其他实体加入/订购? (即我需要将users
添加到上述查询并按其字段排序)
(我知道查询语法可能更适合连接,但我对lambda语法更熟悉/更舒服,所以它会更受欢迎)
答案 0 :(得分:1)
首先需要Join
使用Join
列表User
的{{1}}结果,然后使用ThenBy
按User
字段排序:
tasks = tasks
.Join(elements,
t => t.ElementID,
e => e.ElementID,
(t, e) => new { t, e })
.Join(users,
x => x.t.UserID,
u => u.UserID,
(x, u) => new { x.t, x.e, u })
.OrderBy(m => m.e.Description)
.ThenBy(m => m.u.FirstName)
.ThenBy(m => m.u.LastName)
.Select(m => m.t)
.ToList();