Используйте LINQ и C#, чтобы создать новый список из старого списка

это должно быть довольно просто, но я новичок в LINQ. У меня есть List<FillStruct> of 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 ответов


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
});

это выделит все ваши данные из перечислимых " fillstructs "и создаст перечислимый" NewFillStruct", содержащий вычисленные значения.

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