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扩展。。。。