我有以下课程的列表
class testdata {
public string code { get; set; }
public string[] values { get; set; }
}
如何执行连接,以便获得代码和值的列表,即值将重复每个代码,例如,如果列表中有两个项目,如
1."code1",{"value1","value2"}
2."code2",{"value1","value2","value3"}
我希望决赛的格式如
Code1,Value1
code1,Value2
Code2,value1
code3,value2
code3,value3
我想通过LINQ和匿名类实现它,我可以使用循环并根据最终结构创建一个类。
答案 0 :(得分:2)
myList.SelectMany(td => td.values.Select(v => new { td.code, v } ))
SelectMany
说"取许多IEnumerables并将它们的元素连接成一个IEnumerable"
td
是列表中的单个元素。它是testdata
现在,您可以Select
超过td.values
来创建单独的匿名对象。 Select
将返回一个IEnumerable,但包含在SelectMany
内,IEnumerable<anonymous object>
的许多实例将被展平为一个IEnumerable<anonymous object>
答案 1 :(得分:0)
试试这个
List<TestData> testData = new List<TestData>() {
new TestData() { code = "Code1", values = new string[] {"Value1","Value2"}},
new TestData() { code = "Code2", values = new string[] {"value1"}},
new TestData() { code = "code3", values = new string[] {"value2","value3"}}
};
var results = testData.Select(x => x.values.Select(y => new { code = x.code, value = y })).SelectMany(y => y).ToList();