首页 / C# / c#-基于元素变量和元素位置的拆分列表
c#-基于元素变量和元素位置的拆分列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-基于元素变量和元素位置的拆分列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1594字,纯文字阅读大概需要3分钟。
内容图文
嘿,我试图根据元素的布尔值是否为真来拆分列表.但是每次它经过某个true并遇到一个false时,我都希望它也开始一个包含所有false的新列表,直到再次遇到true等等.所以基本上将假和真序列分组
public void SortWalls()
{
List<Node> innerWallNodes;
foreach(Wall w in walls)
{
WallAxis ax = w.axis;
innerWallNodes = new List<Node>();
for(int i=w.wallNodes.Count-1; i>=0; i--)
{
if(w.wallNodes[i].markedForDoor)
{
//split wall!!
innerWallNodes.Add(w.wallNodes[i]);
w.wallNodes.RemoveAt(i);
}
}
if(innerWallNodes.Count > 0)
{
Wall wall = new Wall(innerWallNodes, ax);
innerWalls.Add(wall);
}
}
}
我是这样做的,然后根据List的第一个和最后一个元素构建一个网格.但由于在许多情况下,innerWallNodes可能位于列表中间,因此被“切掉”,因此我剩余的“外墙”在列表中的第一个和最后一个在网格中仍具有相同的节点索引,仍然覆盖了我的“内墙”
因此,假设每个节点!markedForDoor为0,每个节点markedForDoor为1,它们在我的列表中的排序如下.
像这样:
| 000 | 11111 | 00000 | 11 | 000 |我将如何获得| … |之间的清单? ?
我如何以一种简单的方式做到这一点.我以为Linq对此会有帮助,但找不到任何东西.
解决方法:
Linq不会帮助.这是代码:
List<List<YouObjectType>> SplitList(List<YourObjectType> listToSplit) {
List<List<YouObjectType>> listOfLists = new List<List<YourObjectType>>();
List<YourObjectType> tmp = new List<YourObjectType>();
foreach(YourObjectType item in listToSplit) {
if (tmp.Count > 0
&& tmp[tmp.Count - 1] != item) {
// Compare you items here as you wish,
// I'm not sure what kind of objects
// and what kind of comparison you are going to use
listOfLists.Add(tmp);
tmp = new List<YourObjectType>();
}
tmp.Add(item);
}
if (tmp.Count > 0) {
listOfLists.Add(tmp);
}
return listOfLists;
}
内容总结
以上是互联网集市为您收集整理的c#-基于元素变量和元素位置的拆分列表全部内容,希望文章能够帮你解决c#-基于元素变量和元素位置的拆分列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。