我有一个简单的列表,比如
List<string> Test=new List<string>() {"A","B","C"}
我正在使用一个简单的 Linq.Aggregate 来从这个 List 的元素中获取一个字符串,如下所示:-
string Output= Test.Aggregate((First, Next) => First + "\r\n" + Next);
这给了我这样的结果(新行分隔):
A
B
C
但是,我希望每行都有一个序列号的结果,即像这样:-
1)A
2)B
3)C
我如何使用 linq 做到这一点?
Select
有一个重载,可以为您提供要使用的元素的索引,因此您可以执行Select((x,i)=>String.Format("{0}){1}", i+1,x))
. 或全文:
string output= Test.Select((x,i)=>String.Format("{0}){1}", i+1,x)).Aggregate((First, Next) => First + "\r\n" + Next);
不过值得一提的是,Aggregate
出于性能原因,循环中的字符串连接(以及循环中的计数)通常被认为是一个坏主意。您应该考虑使用替代方法,例如StringBuilder
:
string output = Test
.Aggregate (new StringBuilder(), (sb, x) => sb.AppendFormat("{0}){1}\r\n", lineCount++, x))
.ToString();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句