gpt4 book ai didi

c# - 使用 select 将 foreach 转换为 linq 表达式

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:54 25 4
gpt4 key购买 nike

我有表达:

  var newValues = MetarDecoder.Decode(telegram)
.OfType<MeteoParameter<decimal>>()
.Select(parameter => MeteoParameterFactory
.Create(parameter.ParameterId, parameter.DateTime.ToLocalTime(), parameter.Status, parameter.Value))
.ToList();

MeteoParameterFactory 由于某些原因无法更改,保持原样即可。

MeteoParameter 也有 string Info 属性。

我需要将 Info 从旧的 parameter 复制到 MeteoParameterFactory.Create() 结果。

没有 LINQ,它看起来像:

 var val = MetarDecoder.Decode(telegram).OfType<MeteoParameter<decimal>>().ToList();

foreach (var param in val)
{
var parameter = MeteoParameterFactory.Create(param.ParameterId, param.DateTime.ToLocalTime(), param.Status, param.Value);
parameter.Info = param.Info;
newValues.Add(parameter);
}

那么,有什么办法可以在如下所示的 LINQ 表达式中添加这部分内容吗?

最佳答案

Select 中,您可以创建一个匿名函数,返回在其中创建的参数

var newValues = MetarDecoder.Decode(telegram)
.OfType<MeteoParameter<decimal>>()
.Select(param => {
var parameter = MeteoParameterFactory.Create(param.ParameterId, param.DateTime.ToLocalTime(), param.Status, param.Value);
parameter.Info = param.Info;
return parameter;
}).ToList();

关于c# - 使用 select 将 foreach 转换为 linq 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29431632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com