我有课:
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执行此操作?
谢谢你, 米格尔
答案 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;
});