我总是遇到这样的例子.在这种情况下,我想在一个先前加载的名为files的变量中为每个FileInfo对象填充一个带有新行的stringbuilder ,当然这包含一堆FileInfo对象.对于第一个对象,我想在文本之后添加FIRST,然后为我要添加NOTFIRST的其他内容添加.要使用forloop执行此操作,我必须设置一个计数器,执行if语句并递增计数器.
我已经学会了足够的linq,它在我的手指尖,但我知道必须有一个优雅的 LINQ解决方案.
var mysb = new StringBuilder();
var count = 0;
string extra;
foreach (System.IO.FileInfo fi in files)
{
var newLine = fi.Name;
if (count == 0)
extra = "FIRST";
else
extra= "NOTFIRST";
count = count++;
mysb.AppendLine(string.Format("({0} {1})", newLine, extra));
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我会放弃LINQ并坚持使用你所拥有的,更简单的方法:
var mysb = new StringBuilder();
foreach (FileInfo fi in files)
{
string extra = mysb.Length == 0 ? "FIRST" : "NOTFIRST";
mysb.Append(fi.Name);
mysb.AppendLine(extra);
}
Run Code Online (Sandbox Code Playgroud)
(我不清楚为什么你将文件名视为有效的格式字符串...当然,如果它确实是一个有效的格式字符串,你可以改变我的两个调用,Append()然后再AppendLine()回到单个调用string.Format())