假设我有以下内容:
public class ClassA
{
public string Description {get;set;}
public List<Product> Products {get;set;}
}
public class ClassB
{
public string Description {get;set;}
public Product SingleProduct {get;set;}
}
public class ClassC
{
public List<ClassA> ListOfAs {get;set;}
public List<ClassB> BreakDownListOfAs()
{
// This is the critical point
}
}
在标记的关键点,我想返回一个ClassB
通过检查ListOfAs
和分解它创建的实例列表,这样每个实例ClassB
都有一个产品,并且Description
来自它所在的ClassA
实例Product
。
例如,如果我有:
var ListOfAs = new List<ClassA> {
new ClassA {
Description = "foo",
Products = new List<Product> { p1, p2 }
},
new ClassA {
Description = "bar",
Products = new List<Product> { p3, p4 }
}
};
那么返回值ClassC.BreakDownListOfAs()
应该匹配:
new List<ClassB> {
new ClassB { Description = "foo", Product = p1 },
new ClassB { Description = "foo", Product = p2 },
new ClassB { Description = "bar", Product = p3 },
new ClassB { Description = "bar", Product = p4 },
}
我知道我通常会.SelectMany()
用于投影子列表,但我无法弄清楚如何使用父对象中的字符串来实现投影子元素的组合。