2010-03-15 24 views
6

Esto debería ser bastante simple, pero soy nuevo en LINQ. Tengo List<FillStruct> de FillList estructuras. Me gustaría utilizar LINQ para crear un nuevo List<NewFillStruct> donde, en lugar de tener el número de compras y ventas, tenga una variable que contenga la suma.Use LINQ y C# para hacer una nueva lista de una lista anterior

Por ejemplo, si la estructura FillStruct tiene

buy = 4 

y

sell = 2 

entonces la estructura NewFillStruct tendrá

numlong = 2. 

Si la estructura FillStruct tiene

buy = 2 

y

sell = 4 

entonces la estructura NewFillStruct tendrán

numlong = -2. 

Estas son las estructuras.

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

struct NewFillStruct 
{ 
    int numlong; 
    string date; 
} 

Respuesta

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

Sin embargo, tenga en cuenta que struct no necesariamente es una buena opción para esto (prefieren class a menos que tenga una buena razón).

o evitar por completo LINQ:

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

Esto seleccionará todos los datos de los "fillstructs" enumerables y crear un enumerable de "NewFillStruct" que contiene los valores calculados.

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