2010-03-15 54 views
6

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

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

回答

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

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

或避免LINQ完全:

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

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

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