使用 LINQ 将节点列表及其属性列表组合在一起
本文关键字:列表 属性 组合 在一起 节点 使用 LINQ | 更新日期: 2023-09-27 18:34:25
>我有一个包含节点列表的表(具有属性 ID 和名称),以及另一个包含节点属性列表的表(具有对相应节点 ID 的引用父级)。我通常查询节点,然后获取其属性,以填充对象
public class NodeWithAttributes
{
public Node Node = new Node();
public List<NodeAttribute> NodeAttributes = new List<NodeAttribute>();
}
但是,当我想查询"具有属性的节点"列表时,事情变得复杂。我正在尝试按 Parent 将属性分组在一起,然后将它们分配给对象 - 如下所示:
var results = (from n in dbNodes.Nodes
join na in dbNodes.NodeAttributes on n.ID equals na.Parent
group na by na.Parent
into g
select new NodeWithAttributes
{
Node = n,
NodeAttributes = g
}
).ToList();
但我似乎只能返回组,而不是基于它的对象。我该怎么做才能返回 NodeWithAttributes 列表?
我认为在您的情况下无需按数据分组。 如果需要父子项,请尝试使用类似于以下内容的查询。
var query = from c in north.Customers
orderby c.CustomerID
select new
{
customer = c,
orders = c.Orders
};
foreach (var item in query)
{
Console.WriteLine(item.customer.CompanyName);
foreach (var ord in item.orders)
{
Console.WriteLine(ord.OrderDate + " " + ord.OrderID);
}
Console.WriteLine("");
}