C# 将foreach循环更改为lambda
可能重复:C# 将foreach循环更改为lambda,c#,linq,lambda,C#,Linq,Lambda,可能重复: 我想简化我的代码,并将其更改为更短且可读的代码 List<string> onlineModelsNumbers = new List<string>(); foreach (OnlineModel om in OnlineModels) onlineModelsNumbers.Add(om.model_id.ToString()); List onlineModelsNumbers=new List(); foreach(在线模型中的在线模型o
我想简化我的代码,并将其更改为更短且可读的代码
List<string> onlineModelsNumbers = new List<string>();
foreach (OnlineModel om in OnlineModels)
onlineModelsNumbers.Add(om.model_id.ToString());
List onlineModelsNumbers=new List();
foreach(在线模型中的在线模型om)
添加(om.model_id.ToString());
在这里,我想用lambda表达式写同样的东西。但是我该怎么做呢
List<string> onlineModelsNumbersL = onlineModelsNumbers.ForEach(...)
List onlinemodelsumbersl=onlinemodelsumbers.ForEach(…)
或
List onlinemodelsumbersl=新列表(onlinemodelsumbers.ForEach(…)
还有其他建议吗?LINQ(这样LINQ函数保持纯净),但是很容易编写自己的代码来包装一个foreach
LINQ(这样LINQ函数保持纯净),但是很容易编写自己的代码来包装一个foreach列出OnlineModels=OnlineModels。选择(om=>om.model\u id.ToString()).ToList();
List<string> onlineModelsNumbers = OnlineModels.Select(om => om.model_id.ToString()).ToList();
列出OnlineModels成员=OnlineModels。选择(om=>om.model_id.ToString()).ToList();
那么:
onlineModelsNumbers.AddRange(OnlineModels.Select(o => o.model_id.ToString());
那么:
onlineModelsNumbers.AddRange(OnlineModels.Select(o => o.model_id.ToString());
你的代码已经很简单了。可以考虑使用隐式类型的循环变量:
foreach(var om in OnlineModels)
{
onlineModelNumbers.Add(om.model_id.ToString());
}
或者您可以使用AddRange
:
onlineModelNumbers.AddRange(OnlineModels.Select(om => om.model_id.ToString()));
你的代码已经很简单了。可以考虑使用隐式类型的循环变量:
foreach(var om in OnlineModels)
{
onlineModelNumbers.Add(om.model_id.ToString());
}
或者您可以使用AddRange
:
onlineModelNumbers.AddRange(OnlineModels.Select(om => om.model_id.ToString()));
此处您不需要foreach,选择将为您提供:
IEnumerable<string> = OnlineModels.Select(x => x.model_id.ToString());
IEnumerable=OnlineModels.Select(x=>x.model_id.ToString());
此处您不需要foreach,选择将为您完成:
IEnumerable<string> = OnlineModels.Select(x => x.model_id.ToString());
IEnumerable=OnlineModels.Select(x=>x.model_id.ToString());
只需变换并将其添加为一个范围:
List<string> onlineModelsNumbers = new List<string>(OnlineModels.Select(om => om.model_id.ToString()));
List onlinemodelsumbers=新列表(OnlineModels.Select(om=>om.model_id.ToString());
只需变换并将其添加为一个范围:
List<string> onlineModelsNumbers = new List<string>(OnlineModels.Select(om => om.model_id.ToString()));
List onlinemodelsumbers=新列表(OnlineModels.Select(om=>om.model_id.ToString());
您希望对OnlineModels的每个成员执行“foreach”,因此希望将模型的模型id字符串表示添加到OnlineModels成员中
我希望能写出如下表达式:
onlineModels.ForEach(om => onlineModelsNumbers.Add(om.model_id.ToString()))
您希望对OnlineModels的每个成员执行“foreach”,因此希望将模型的model_id字符串表示添加到OnlineModels成员
我希望能写出如下表达式:
onlineModels.ForEach(om => onlineModelsNumbers.Add(om.model_id.ToString()))
如果你想要一个列表,你需要调用ToList()。正如你发布的那样。谢谢。:-)如果你想要一个列表,你需要调用ToList()。正如你发布的那样。谢谢。:-)这是一种相当糟糕的做法,因为您正在导致功能性样式调用的副作用,并且依赖于它。最好使用AddRange
或ToList
来避免这种情况。这是一种相当糟糕的做法,因为您正在导致函数式调用的副作用,并且依赖于它。最好使用AddRange
或ToList
来避免这种情况。它确实为列表提供了ForEach扩展….它确实为列表提供了ForEach扩展。。。。