2010-03-15 5 views
6

Cela devrait être assez simple, mais je suis nouveau chez LINQ. J'ai un List<FillStruct> de FillList structs. Je voudrais utiliser LINQ pour créer un nouveau List<NewFillStruct> où au lieu d'avoir le nombre d'achats et de ventes, j'aurais une variable contenant la somme.Utilisez LINQ et C# pour créer une nouvelle liste à partir d'une ancienne liste

Par exemple, si la structure FillStruct a

buy = 4 

et

sell = 2 

alors la structure NewFillStruct aura

numlong = 2. 

Si la structure a FillStruct

buy = 2 

et

sell = 4 

alors la structure NewFillStruct aura ont

numlong = -2. 

Voici les structures.

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

struct NewFillStruct 
{ 
    int numlong; 
    string date; 
} 

Répondre

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

Cependant, notez que struct n'est pas nécessairement un bon choix pour ce (préférez class sauf si vous avez une bonne raison).

Ou pour éviter LINQ entièrement:

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

Cela permet de sélectionner toutes vos données à partir des dénombrables « fillstructs » et créer un dénombrable de « NewFillStruct » contenant les valeurs calculées.

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