将List <t>值放在两个数组中</t>

时间:2013-11-10 13:31:51

标签: c# linq

我有课:

public class DataModel {
  public int X { get; set; }
  public int Y { get; set; }
}

以下列表:

var data = new List<DataModel>();
data = service.GetData();

我需要将List更改为List:

public class NewDataModel {
  public int[] XValues { get; set; }
  public int[] YValues { get; set; }
}

所以XValues是原始列表中的所有X值......与YValues相同。

如何使用Linq执行此操作?

谢谢你, 米格尔

3 个答案:

答案 0 :(得分:4)

您应该发布最佳尝试。

var newList = new NewDataModel { 
                  XValues = data.Select(dm => dm.X).ToArray(), 
                  YValues = data.Select(dm => dm.Y).ToArray() };

答案 1 :(得分:2)

未经测试,但是像这样:

var newDataModel = new NewDataModel();
newDataModel.XValues = data.Select(d => d.X).ToArray();
newDataModel.YValues = data.Select(d => d.Y).ToArray();

答案 2 :(得分:0)

您应该使用Aggregate将其循环一次:

newDataModel = data.Select((x,i)=>new{ x, i})
                   .Aggregate(new NewDataModel(){XValues = new int[data.Count],
                                                 YValues = new int[data.Count]}, 
                              (a,b)=> {
                                a.XValues[b.i] = b.x.X;
                                a.YValues[b.i] = b.x.Y;
                                return a;
                             });