Cha*_*han 0 c# linq stringbuilder
为什么我不能通过LINQ Select()查询将列表中的字符串值插入StringBuilder ?
给定下面的代码,我希望构建的字符串结尾为,{CBA}但实际上是{}。
我想念什么?
var testList = new List<string>
{
"A",
"B",
"C"
};
var testStringBuilder = new StringBuilder("{}");
testList.Select(y => testStringBuilder.Insert(1,y));
Run Code Online (Sandbox Code Playgroud)
Linq很懒-大多数linq方法只有在您实际遍历查询后才会执行。
Select反正不是正确的选择。这是一个映射函数-对于集合中的每个元素,它都会以某种方式对其进行转换,并返回转换后的元素。编写有Select副作用的(或任何linq方法)通常是一个非常糟糕的主意。
您正在做的是获取每个元素并对其进行处理-这是foreach循环的用例:
foreach (var element in testList)
{
testStringBuilder.Insert(1, element);
}
Run Code Online (Sandbox Code Playgroud)
不要试图使用List<T>.ForEach它。它仅在上可用List<T>,而在其他任何集合上均不可用:故意将其排除在Linq之外,因为它的存在被认为是错误的。请参阅Eric Lippert的推理。
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |