2010-03-15 72 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 
       }; 
相關問題