0

我有课:

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

以及以下列表:

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

我需要将列表更改为列表:

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

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

我怎样才能用 Linq 做到这一点?

谢谢你,米格尔

4

3 回答 3

4

您应该发布您的最佳尝试。

var newList = new NewDataModel { 
                  XValues = data.Select(dm => dm.X).ToArray(), 
                  YValues = data.Select(dm => dm.Y).ToArray() };
于 2013-11-10T13:35:33.623 回答
2

未经测试,但类似这样:

var newDataModel = new NewDataModel();
newDataModel.XValues = data.Select(d => d.X).ToArray();
newDataModel.YValues = data.Select(d => d.Y).ToArray();
于 2013-11-10T13:35:19.657 回答
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;
                             });
于 2013-11-10T13:44:54.913 回答