如何在LINQ中实现这一目标?

Sre*_*har 0 c# linq

我想重写一下,也许使用谓词或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)

谢谢

Nol*_*rin 5

我认为在这里使用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)