更好的方法来使用linq做这个foreach

Div*_*Dan 3 c# linq

嘿那里,我有这个foreach循环,不能100%工作.基本上我输出一个字符串.我的问题是我不想要sb.Append(","); 要添加循环中的最后一条记录.是否有一种简单的方法使用linq来解决这个问题?

 sb.Append("Readings:[");
                    foreach (var reading in lake.Reading)
                    {
                        sb.Append("[");
                        sb.Append("\"");
                        sb.Append(reading.DateTime.ToString("dd-MMM-yy"));
                        sb.Append("\"");
                        sb.Append(",");
                        sb.Append(reading.Level);
                        sb.Append("]");
                //only insert this line if its the not the last record        sb.Append(",");
                    }
                sb.Append("]");
Run Code Online (Sandbox Code Playgroud)

Jef*_*ado 5

你应该考虑使用String.Join()String.Concat().它使得(逗号分隔)列表更容易成为字符串.与LINQ很好地配合.

var combine = from r in lake.Reading
              select String.Format("[\"{0:dd-MMM-yy}\",{1}]", r.DateTime, r.Level);
var str = String.Format("Readings:[{0}]", String.Join(",", combine));
Run Code Online (Sandbox Code Playgroud)