Используйте LINQ и C #, чтобы создать новый список из старого списка - PullRequest
9 голосов
/ 15 марта 2010

Это должно быть довольно просто, но я новичок в LINQ. У меня есть List<FillStruct> из FillList структур. Я хотел бы использовать LINQ для создания нового List<NewFillStruct>, где вместо количества покупок и продаж у меня была бы одна переменная, содержащая сумму.

Например, если структура 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;
}

Ответы [ 2 ]

21 голосов
/ 15 марта 2010
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
});
3 голосов
/ 15 марта 2010

Это выберет все ваши данные из перечисляемых «fillstructs» и создаст перечислимое «NewFillStruct», содержащее вычисленные значения.

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