C# 具有多连接的LINQ排序
我继承的基本架构(没有外键): 我需要订购一个C# 具有多连接的LINQ排序,c#,linq,join,C#,Linq,Join,我继承的基本架构(没有外键): 我需要订购一个列表,首先按元素.描述,然后按用户.FirstName,然后按用户.LastName 到目前为止,我已通过元素进行订购。说明使用以下内容: List<Task> tasks = db.Tasks.ToList(); List<Element> elements = db.Elements.ToList(); List<User> users = db.Users.ToList(); tasks = tas
列表
,首先按元素.描述
,然后按用户.FirstName
,然后按用户.LastName
到目前为止,我已通过元素进行订购。说明使用以下内容:
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();
List tasks=db.tasks.ToList();
List elements=db.elements.ToList();
List users=db.users.ToList();
任务=任务。加入(元素,
t=>t.ElementID,
e=>e.ElementID,
(t,e)=>新的{t,e})
.OrderBy(m=>m.e.Description)
.Select(m=>m.t).ToList();
我如何加入/订购多个其他实体?(即,我需要向上述查询添加用户
,并按字段排序)
(我知道查询语法可能更适合于联接,但我已经对lambda语法更熟悉/更熟悉了,所以最好是这样)首先需要使用用户
列表将第一次联接
的结果联接
,然后使用用户
字段进行排序:
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();
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();