我想重写一下,也许使用谓词或Lambda,我该怎么做?
serviceResponse = client.Authorize(....);
string authorizeResponse = string.Empty;
foreach (CdcEntry element in serviceResponse.Cdc)
{
authorizeResponse += element.Name + Environment.NewLine;
foreach (CdcEntryItem item in element.Items)
{
authorizeResponse += " (" + item.Key + ", " + item.Value + ") "
+ Environment.NewLine;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我认为在这里使用LINQ没有任何意义,因为您正在尝试构建响应字符串,因此执行最适合命令式而非函数式编程的任务.(你当然可以在Aggregate字符串上使用该方法,但这并不是真正的帮助.)
此外,该StringBuilder类型更适合此类工作.(在我看来,效率更高,也更清洁.当然,根据具体情况,前者可能并不重要.)
在我看来,这是执行此操作的最佳方式:
serviceResponse = client.Authorize(....);
var sb = new StringBuilder();
foreach (CdcEntry element in serviceResponse.Cdc)
{
sb.AppendLine(element.Name);
foreach (CdcEntryItem item in element.Items)
{
sb.AppendFormat(" ({0}, {1}) ", item.Key, item.Value);
sb.AppendLine();
}
}
var authorizeResponse = sb.ToString();
Run Code Online (Sandbox Code Playgroud)