2010-03-15 20 views
6

Bu oldukça basit olmalı, ancak LINQ'da yeniyim. List<FillStruct>FillList yapılarım var. Yeni bir List<NewFillStruct> oluşturmak için LINQ kullanmak isterdim, satın alma ve satım sayısı yerine, toplamı içeren bir değişken olurdu. FillStruct yapısıEski bir listeden yeni bir liste oluşturmak için LINQ ve C# kullanın.

varsa Örneğin

, FillStruct yapısı

buy = 4 

ve

sell = 2 

varsa o NewFillStruct yapısı

numlong = 2. 

olacaktır

buy = 2 

ve

sell = 4 

sonra NewFillStruct yapısı İşte

numlong = -2. 

olacak yapılardır.

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

struct NewFillStruct 
{ 
    int numlong; 
    string date; 
} 

cevap

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

Ancak struct bunun için iyi bir seçim (Eğer iyi bir nedeniniz olmadıkça class tercih) değil ille olduğuna dikkat.

Veya tamamen LINQ önlemek için:

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

Bu enumerable "fillstructs" tüm verileri seçmek ve hesaplanan değerleri içeren "NewFillStruct" nin bir enumerator yaratacaktır.

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