可能重复:
C# Syntax - Example of a Lambda Expression - ForEach() over Generic List
我想简化我的代码并将其更改为更短且仍然可读的代码。
List<string> onlineModelsNumbers = new List<string>();
foreach (OnlineModel om in OnlineModels)
onlineModelsNumbers.Add(om.model_id.ToString());
这里我正在考虑在lambda表达式中编写相同的东西。但是我该怎么做?
List<string> onlineModelsNumbersL = onlineModelsNumbers.ForEach(...)
或
List<string> onlineModelsNumbersL = new List<string>(onlineModelsNumbers.ForEach(...))
还有其他建议吗?
答案 0 :(得分:5)
List<string> onlineModelsNumbers = OnlineModels.Select(om => om.model_id.ToString()).ToList();
答案 1 :(得分:3)
怎么样:
onlineModelsNumbers.AddRange(OnlineModels.Select(o => o.model_id.ToString());
答案 2 :(得分:3)
var onlineModelsNumbers = OnlineModels.Select(m => m.model_id.ToString())
.ToList();
答案 3 :(得分:0)
LINQ purposely does not come with a ForEach
extension(以便LINQ函数保持纯粹)但是编写自己的foreach
很容易。
答案 4 :(得分:0)
您的代码已经很简单了。您可以考虑使用隐式类型的循环变量:
foreach(var om in OnlineModels)
{
onlineModelNumbers.Add(om.model_id.ToString());
}
或者您可以使用AddRange
:
onlineModelNumbers.AddRange(OnlineModels.Select(om => om.model_id.ToString()));
答案 5 :(得分:0)
这里你不需要foreach,select会为你做这个:
IEnumerable<string> = OnlineModels.Select(x => x.model_id.ToString());
答案 6 :(得分:0)
只需将其转换并添加为范围:
List<string> onlineModelsNumbers = new List<string>(OnlineModels.Select(om => om.model_id.ToString()));
答案 7 :(得分:0)
您想在OnlineModels的每个成员上执行“foreach”,因此希望将模型的model_id字符串表示添加到onlineModelsNumbers。
我希望将表达式写成如下:
onlineModels.ForEach(om => onlineModelsNumbers.Add(om.model_id.ToString()))