C# LINQ:如何使用LINQ展平深嵌套对象
我正试着把那个模型做成收藏品C# LINQ:如何使用LINQ展平深嵌套对象,c#,linq,C#,Linq,我正试着把那个模型做成收藏品 public class Category { public string name; public string id; public Subcategory subcategory; } public class Subcategory { public string name; public string id; public List
public class Category
{
public string name;
public string id;
public Subcategory subcategory;
}
public class Subcategory
{
public string name;
public string id;
public List<Product> products;
}
public class Product
{
public string name;
public string id;
public Supplier1 supplier1;
public Supplier2 supplier2
}
public class Supplier1
{
public string name;
public string id;
}
public class Supplier2
{
public string name;
public string id;
}
我试过很多次,但都不够深入 您可以简单地执行以下操作:
var results =
from c in Categories
from p in c.subcategory.products
select new MixedClass()
{
CategoryId = c.id,
SubcategoryId = c.subcategory.id,
ProductId = p.id,
Supplier1Id = p.supplier1.id,
Supplier2Id = p.supplier2.id,
};
或者,如果您喜欢流利的语法:
var results = Categories
.SelectMany(c => c.subcategory.products,
(c, p) => new MixedClass()
{
CategoryId = c.id,
SubcategoryId = c.subcategory.id,
ProductId = p.id,
Supplier1Id = p.supplier1.id,
Supplier2Id = p.supplier2.id,
});
您可以简单地执行以下操作:
var results =
from c in Categories
from p in c.subcategory.products
select new MixedClass()
{
CategoryId = c.id,
SubcategoryId = c.subcategory.id,
ProductId = p.id,
Supplier1Id = p.supplier1.id,
Supplier2Id = p.supplier2.id,
};
或者,如果您喜欢流利的语法:
var results = Categories
.SelectMany(c => c.subcategory.products,
(c, p) => new MixedClass()
{
CategoryId = c.id,
SubcategoryId = c.subcategory.id,
ProductId = p.id,
Supplier1Id = p.supplier1.id,
Supplier2Id = p.supplier2.id,
});
你能发布你失败的尝试吗?现在还不清楚你想要完成什么。这些类如何组合在一起?您希望我们如何获得ProductId?有不止一种产品。这就是为什么它会出现在一个列表中。你能发布你失败的尝试吗?现在还不清楚你想要完成什么。这些类如何组合在一起?您希望我们如何获得ProductId?有不止一种产品。这就是为什么它在一个列表中。第二个版本给了我关于未知x的错误,它来自哪里?然而,第一个版本正是我需要的。谢谢大家!@用户2373759哦,我用一个x写了一个方法,然后修改了它-但是把那个部分留在了。我已经更正了。第二个版本给了我一个错误,认为x是未知的,它来自哪里?然而,第一个版本正是我需要的。谢谢大家!@用户2373759哦,我用一个x写了一个方法,然后修改了它-但是把那个部分留在了。我已经改正了。