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

时间:2010-03-15 06:14:09

标签: c# linq linq-to-objects

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

例如,如果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;
}

2 个答案:

答案 0 :(得分:21)

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

但请注意,struct

或完全避免使用LINQ:

class

答案 1 :(得分:3)

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

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