【问题标题】: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
};