我有int列表,其中包含值0,0,0,1,2,3,4,0,0现在我想将它分成3个列表,像这个列表A由0组成,0,0和列表B包括1,2,3,4和列表C包括0,0.I知道如何拆分使用如果和为,但我怎么能做到这一点使用LINQ。通常的格式,我需要分裂开始一些零和中间一些值和最后一些零,我需要分裂一个列表中的第一个零,一个列表中的中间值和另一个列表中结束零,如我在上面的例子中说的使用linq我也喜欢拿这个价值指数。如何使用linq分割列表
2
A
回答
7
第一个。
myList.TakeWhile(x => x==0)
第二个。
myList.SkipWhile(x => x==0).TakeWhile(x => x!= 0)
第三个。
myList.SkipWhile(x => x==0).SkipWhile(x => x!= 0)
-1
您可以使用Linq向对象公开的Skip和Take方法来获取序列中的某些元素。
var myList = new int[] {0,0,0,1,2,3,4,0,0};
var list1 = myList.Take(3);
var list2 = myList.Skip(3).Take(4);
var list3 = myList.Skip(7);
-1
您可以在LINQ
List<int> list = new List<int>();
list.Add(0);
list.Add(0);
list.Add(0);
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
list.Add(0);
list.Add(0);
var listOne = list.Take(3);
var listSecond = list.Skip(3).Take(4);
var listThird = list.Skip(7);
0
使用Take(n)
或Skip(n)
如果你想通过零序分裂那就试试这个代码:
static void Main(string[] argv)
{
var list = new[] { 0, 0, 0, 1, 2, 3, 4, 0, 0 };
int groupIndex = 0;
var result = list.Select(
(e, i) =>
{
if (i == 0)
{
return new {val = e, group = groupIndex};
}
else
{
groupIndex =
(e != 0 && list[i - 1] == 0) || (e == 0 && list[i - 1] != 0)
?
groupIndex + 1
: groupIndex;
return new {val = e, group = groupIndex};
}
}
).GroupBy(e => e.group).Select(e => e.Select(o => o.val).ToList()).ToList();
foreach (var item in result)
{
foreach (var val in item)
{
Console.Write(val + ";");
}
Console.WriteLine();
Console.WriteLine("Count:" + item.Count);
Console.WriteLine();
}
Console.ReadLine();
}
输出是:
0;0;0;
Count:3
1;2;3;4;
Count:4
0;0;
Count:2
这是真的不清楚什么是从你的问题分裂的标准。如果我给了错误的答案,然后解释你的问题。
相关问题
- 1. 分割使用LINQ
- 2. 如何使用LINQ来区分列表?
- 3. 使用LINQ标记元素的分割列表?
- 4. C#,LINQ,实体框架4:分割表中,以使用LINQ
- 5. c#linq分割列表按实体值分为两部分
- 6. 如何在分割表格时将div分割为两列?
- 7. 分割,rstrip,追加列表的使用
- 8. Prolog分割列表
- 9. 分割python列表
- 10. 分割值列表
- 11. 如何分割我的列表?
- 12. 如何使用LINQ从多列列表
- 13. 如何分割使用preg_match_all
- 14. 如何使用C#和Linq分割字符串
- 15. 用分隔符分割列表
- 16. 分割字符串列出<string>使用LINQ
- 17. 猪:如何分割阵列
- 18. 使用linq获取分组值的列表作为列表使用linq
- 19. 使用linq创建分类列表
- 20. 使用linq分割文本文件并存入数据表
- 21. 在列表中使用相同元素的分割列表
- 22. 如何用不同的分隔符使用LINQ分割两次字符串?
- 23. Haskell:如何返回列表中可能的分割列表
- 24. 如何使用LINQ C过滤列表#
- 25. 如何使用C#过滤列表LINQ
- 26. 如何从列表使用LINQ
- 27. 如何使用LINQ将其拆分为子列表?
- 28. 如何使用LINQ分组和合并数据列表?
- 29. 使用字符分隔符分割列
- 30. 将分割列表加入列表
你还没有说*你想如何拆分数据。为什么它应该以这种方式分割,而不是{0,0,0,1},{2,3,4,0},{0}? – 2010-10-07 09:13:00
请给我们更多关于拆分标准的细节。它是零和非零的单独序列吗? – LukeH 2010-10-07 09:13:18
我不认为你可以 – Aliostad 2010-10-07 09:14:34