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

本文关键字:格式 循环 何正确 设置 | 更新日期: 2023-09-27 18:29:11

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

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

我想打印:(如果他们有多个作者用","(完成(分隔每个作者,并在最后一个作者姓名中添加"AND" - 如果他们没有超过一个作者,则不需要"。

我该怎么做??

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

你最好先构建字符串,然后将其写入循环之外的屏幕。我建议为此使用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());

使用字符串。联接以使用分隔符合并字符串。

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