使用LINQ和C#从旧列表中创建一个新列表

这应该很简单,但我是LINQ的新手。 我有一个FillList结构的List 。 我想使用LINQ来创建一个新的List ,而不是拥有购买和销售的数量,我将有一个包含总和的变量。

例如,如果FillStruct结构具有

 buy = 4 

 sell = 2 

然后NewFillStruct结构将有

 numlong = 2. 

如果FillStruct结构有

 buy = 2 

 sell = 4 

然后NewFillStruct结构将有

 numlong = -2. 

这是结构。

 struct FillStruct { int buy; int sell; string date; } struct NewFillStruct { int numlong; string date; } 

 List origList = ... List newList = origList.Select(x => new NewFillStruct { numlong = x.buy - x.sell, date = x.date }).ToList(); 

但是,请注意struct 不一定是一个很好的选择(除非你有充分的理由,否则更喜欢class )。

或完全避免使用LINQ:

 List newList = origList.ConvertAll(x => new NewFillStruct { numlong = x.buy - x.sell, date = x.date }); 

这将从可枚举的“fillstructs”中选择所有数据,并创建包含计算值的“NewFillStruct”的可枚举。

  var newfills = from fillstruct in fillstructs select new NewFillStruct { numlong = fillstruct.buy - fillstruct.sell, date = fillstruct.date };