public class A
{
public string Value1 { get; set; }
public int Value2 { get; set; }
public List<B> Values { get; set; }
public int Value3 { get; set; }
}
public class B
{
public int Id { get; set; }
public string X { get; set; }
}
public class Result
{
public string Value1 { get; set; }
public int Value2 { get; set; }
public string ValueB1X { get; set; }
public string ValueB2X { get; set; }
...
public string ValueBnX { get; set; }
public int Value3 { get; set; }
}
我需要将A列表转换为结果列表。知道如何用LINQ做到吗?
基本上我需要的是:
A[0] = |Value1|Value2|Value2|
B[0]
B[1]
B[2]
A[1] = |Value1|Value2|Value2|
B[0]
B[1]
B[2]
转换成
+------------------------------------------------------+
rowA[0] | Value1 | Value2 | B[0].X | B[1].X | B[1].X | Value3 |
rowA[1] | Value1 | Value2 | B[0].X | B[1].X | B[1].X | Value3 |
最佳答案
您需要知道有多少B
,因为需要编写Result
类以容纳该数量的项目。因此,这不是一个动态解决方案,无法像您所暗示的那样使用任何数量的B
(1..n)
更好的设计是
public class Result
{
public string Value1 { get; set; }
public int Value2 { get; set; }
public List<B> BValues { get; set; }
}
或者,假设
B
Id
始终是唯一的,public class Result
{
public string Value1 { get; set; }
public int Value2 { get; set; }
public Dictionary<int, string> BValues { get; set; }
}
然后构造一个字典-
List<A> list = GetList();
List<Result> result = list.Select(a =>
new Result()
{
Value1 = a.Value1,
Value2 = a.Value2,
BValues = a.Values.ToDictionary(b => b.Id, b => b.X)
});
关于c# - 使用linq展平数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7479380/