如何正确格式化来自循环的值

时间:2012-03-28 14:15:11

标签: c# asp.net .net

foreach (var book in query)
{
   Response.Write(book.Title);
   foreach (var author in book.Authors)
   {
      Response.Write(" , "+author.FirstName +" "+ author.MiddleInitial + 
         " "+  author.LastName );
   }
}

现在我正在打印书名:所有作者姓名都带有“,”。

我想要打印:(如果他们有多个作者将每个作者用“,”(完成)分开,并将“AND”添加到最后一个作者姓名 - 如果他们没有多个作者没有“ ,是必需的。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

最好先构建字符串,然后将其写入循环外的屏幕。我建议你使用StringBuilder

要使用StringBuilder类,您需要导入System.Text命名空间:

using System.Text;

以下是一些示例代码:

var builder = new StringBuilder();

foreach (var author in book.Authors)
{
    //if the string already contains data append a comma
    if (builder.Length > 0)
        builder.Append(", ");

    //append the author to the string
    builder.AppendFormat("{0} {1} {2}", author.FirstName, author.MiddleInitial, author.LastName);
}

Response.Write(builder.ToString());

答案 1 :(得分:1)

使用string.Join将字符串与分隔符组合在一起。

var authors = string.Join(", ", book.Authors.Select(author=>string.Format("{0} {1} {2}", author.FirstName, author.MiddleInitial, author.LastName)));
Response.Write(authors);