Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何进入列表中的下一个列表<;列表<;节点>&燃气轮机;当满足特定条件时_C#_List - Fatal编程技术网

C# 如何进入列表中的下一个列表<;列表<;节点>&燃气轮机;当满足特定条件时

C# 如何进入列表中的下一个列表<;列表<;节点>&燃气轮机;当满足特定条件时,c#,list,C#,List,我有一个列表节点,而节点中的每个节点都有一个名为兴趣的变量与其关联 public static List<Node> nodes = new List<Node>(); for (int i = 0; i < Program.n; i++) { //int densityrandom = generateRandom(); Node n = new Node(Interest3);

我有一个
列表节点
,而
节点
中的每个
节点
都有一个名为
兴趣
的变量与其关联

public static List<Node> nodes = new List<Node>();
for (int i = 0; i < Program.n; i++)
        {
            //int densityrandom = generateRandom();
            Node n = new Node(Interest3);
            Program.nodes.Add(n);
        }
因此,如果您执行类似于
节点[0].P1.InterestArray[0]
的操作,它将为我提供
数组1
中的第一个元素

下面是我的实际问题:

我正在根据用户输入到节点列表中的内容,将列表
节点拆分为
。因此,如果
节点中有100个元素,它将被分成10个列表,所有这些列表将存储在一个列表中

这是我的想法:

List smallList=newlist();
for(int i=0;i5&&smallList[k].Count!=10)
{
smallList[0]。添加(列表[i]);
}
else smallList[k+1]。添加(list[i]);
}
通过检查与特定节点关联的数组中的所有5个元素,依此类推。但是,当
smallList[0]
达到10的限制时,我想开始在其他一些
smallList[I]
中添加
节点中的元素。当特定
InterestArray[j]的所有值检查
节点中所有节点的
,然后只应将其移动到检查
兴趣数组[j+1]
。如何用c编写此程序?我的实现正确吗?如果正确,可以改进吗


我知道这个问题很让人困惑。如果有什么难以理解的地方,请询问我。我们将非常感谢您的帮助。

与其创建
列表
数据结构,不如在需要节点时简单地查询您现有的
列表

e、 g

老派:

var interestingNodes = new List<Node>();
foreach(Node node in nodes)
{
    foreach(int i in note.InterestArray)
    {
        if(i > 5)
            interestingNodes.Add(node);            
    }
}
或者在林克:

var interstingNodes = from node in nodes
                      where node.P1.InterestArray.Contains(5) 
                      select node;

旁白:你为什么要将列表拆分?@markmnl我不明白你的意思。
List
节点出了什么问题,你为什么要将列表拆分成许多小列表
List
?这似乎是不必要的,而且会使你正在尝试的算法更加复杂。另外,我认为你可以更好地描述你正在尝试实现的目标-这是错误的融合。这是因为我希望列表中的节点排列在大小为10的小列表中,以便所有InterestProfile[I]值大于5的节点都在一起。我是在某种程度上根据InterestProfile[I]的值对它们进行排序。我希望它能消除混淆。我能将此实现扩展到InterestArray[]的所有元素吗?你的意思是什么?你想得到什么?你返回的代码只考虑数组InterestArray中的第一个元素。我想检查InterestArray[]上所有元素的“如果大于5”条件。比如InterestArray[1]、InterestArray[2]、InterestArray[3]…是的,这很简单,更新了我的答案,您可以使用另一个嵌套循环或
数组。Contains()
或LINQ的
IEnumerable.Any()
感谢您的更新。我的实现是否关于检查“interestingNodes”列表的大小是否大于10,如果是,则在新列表中添加元素似乎正确?
List<List<Node>> smallList = new List<List<Node>>();
        for (int i = 0; i < nodes.Count; i++)
        {
            for(int k=0; k < smallList.Count; k++)
            {
            if (list[i].P1.InterestArray[0] > 5 && smallList[k].Count != 10)
            {
                smallList[0].Add(list[i]);
            }
            else smallList[k+1].Add(list[i]);
        }
var interestingNodes = new List<Node>();
foreach(Node node in nodes)
{
    foreach(int i in note.InterestArray)
    {
        if(i > 5)
            interestingNodes.Add(node);            
    }
}
var interstingNodes = nodes.FindAll(node => node.P1.InterestArray.Contains(5));
var interstingNodes = from node in nodes
                      where node.P1.InterestArray.Contains(5) 
                      select node;