我有一个字符串 q.ACBValue
,其中包含 "v1,v2,v4" 或 "v3,v5" 等实例。我想将以下代码转换为更简洁的 lambda 表达式
string[] list = q.ACBValue.Split(',');
for (int i = 0; i < list.Count(); i++)
{
q.ACBOption = q.ACBOption.Replace("value='"+ list[i] + "' ", "value='" + list[i] + "' checked=\"checked\"");
}
最佳答案
尝试这样的事情:
q.ACBValue.Split(',')
.Select(s => new
{
Search = "value='" + s + "' ",
Replace = "value='" + s + "' checked=\"checked\""
})
.ToList()
ForEach(tuple =>
qACBOption = q.ACBOption.Replace(tuple.Search, tuple.Replace));
此解决方案使用 ForEach
List<T>
的方法类(class)。为了使其可见,您必须通过显式调用扩展方法 ToList
将先前的序列转换为列表。 .
还有另一种方法,您可以使用Aggregate
来聚合一路上的结果。扩展方法:
q.ACBOption =
q.ACBValue.Split(',')
.Select(s => new
{
Search = "value='" + s + "' ",
Replace = "value='" + s + "' checked=\"checked\""
})
.Aggregate(
q.ACBOption,
(res, tuple) => res.Replace(tuple.Search, tuple.Replace));
关于c# - 拆分、for 循环并替换为 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41085456/