我有一个数据库表,它代表具有多级层次结构的帐户。每行都有一个代表当前帐户的“AccountKey”,可能还有一个代表父级“AccountKey”的“ParentKey”。
我的模型类是“AccountInfo”,其中包含有关帐户本身的一些信息,以及子帐户列表。
将这种平面数据库结构转换为层次结构的最简单方法是什么?它可以直接在 LINQ 中完成,还是我需要在事后循环并手动构建它?
模型
public class AccountInfo
{
public int AccountKey { get; set; }
public int? ParentKey { get; set; }
public string AccountName { get; set; }
public List<AccountInfo> Children { get; set; }
}
LINQ
var accounts =
from a in context.Accounts
select new AccountInfo
{
AccountKey = a.AccountKey,
AccountName = a.AccountName,
ParentKey = a.ParentKey
};