【问题标题】:Use LINQ and C# to make a new List from an old List使用 LINQ 和 C# 从旧列表创建新列表
【发布时间】:2010-03-15 06:14:09
【问题描述】:

这应该很简单,但我是 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;
}

【问题讨论】:

    标签: c# linq linq-to-objects


    【解决方案1】:
    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
    });
    

    【讨论】:

    • 很好的答案,谢谢
    【解决方案2】:

    这将从可枚举的“fillstructs”中选择您的所有数据,并创建一个包含计算值的“NewFillStruct”枚举。

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

    【讨论】:

      猜你喜欢
      • 2017-10-17
      • 2020-01-25
      • 1970-01-01
      • 2013-05-29
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多