使用linq对嵌套列表进行排序
本文关键字:排序 列表 嵌套 linq 使用 | 更新日期: 2023-09-27 18:15:42
假设我有一个如下结构:
class A {
IEnumerable<B> BList {get;set;}
}
class B {
IEnumerable<C> CList {get;set};
int OrderId {get;set;}
}
class C {
int OrderId {get;set;}
}
我想返回一个As的列表,其中它的BList是按它的OrderId排序的,它的CList也是按它的OrderId排序的。
这些是我在EF6中使用的模型,类A、B、C对应于数据库表。
我花了一些时间试图"澄清"这一点,但没有成功。这可行吗?
EDIT:重复使用Linq 对列表及其所有嵌套对象进行排序
好吧,因为没有人想回答,你也不想添加更多内容。这是我目前对它的看法:
public static A SortEverything(A input)
{
return new A
{
BList =
input.BList
.Select(b =>
new B
{
OrderId = b.OrderId,
CList = b.CList.OrderBy(c => c.OrderId)
})
.OrderBy(b => b.OrderId)
};
}
要返回具有一个输入列表/可枚举IEnumerable<A> input
的按顺序排序的A
列表,您只需要
var sorted = input.Select(SortEverything);
BTW:你的课程中有一些问题——当然你必须公开属性:
class A {
public IEnumerable<B> BList {get; set;}
}
class B {
public IEnumerable<C> CList {get; set; }
public int OrderId {get;set;}
}
class C {
public int OrderId {get;set;}
}