【发布时间】:2015-12-18 20:07:54
【问题描述】:
如果我有一个布尔值列表,如何使用 LINQ 转换成一个整数列表(或任何其他 IEnnumerable<int>),其中每个整数代表每个布尔值字符串的长度?
例如,{true, true, false, false, true, true, true} 将变为 {2, 3},因为 trues 的第一次运行是 2 长,第二次运行是 3 长。还是我必须回到 for 和 foreach 循环?
我对错误值的数量不感兴趣,它们之所以重要只是因为它们分隔了真实值的运行。
所以{true, true, true, false, true, true, true, true, false, false, true, true, true} 会变成{3, 4, 3}
【问题讨论】:
-
for循环有什么问题?它可能比复杂的 Linq 查询更清晰、更容易理解。 See here 用于 Linq 解决方案 -
甚至
yourBooleanList.ForEach(i => i......); -
我会使用 IEnumerable 扩展。
-
另外,为什么你的例子的结果不是
{2, 2, 3}?或者您只是对true值的组感兴趣? -
请澄清您是否只想计算最大组真假布尔值的问题。