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;