使用LINQ或任何其他方式将foreach转换为优化代码
c#
这给定的代码行。如何以更优化的方式编写?下面的代码工作正常,但我需要另一种写法
var attachments = new List<Attachments>();
foreach (var attachment in msg.attachments) //msg.attachments is a Dictionary<string, FileAttachment> type
{
var attach = new Attachments();
attach.name = attachment.Value.name;
attach.type = attachment.Value.type;
attachments.Add(attach);
}
回答
这给定的代码行。如何以更优化的方式编写?
你提到LINQ,但LINQ往往是相反的“优化” -这是交易掉效率换取更多的便利和(有时)简洁。您现有的代码绝对没有问题。唯一重要的调整是用已知长度初始化目标列表:
var attachments = new List<Attachments>(msg.attachments.Count);
您还可以做一些事情,例如在 上使用对象初始值设定项语法new Attachments,或避免使用多个.Value,但老实说:这些都不太可能产生甚至远程可测量的差异。但:
foreach (var attachment in msg.attachments.Values)
{
attachments.Add(new Attachments {
name = attachment.name, type = attachment.type
});
}