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# 为什么可以';t我填充子列表_C#_List - Fatal编程技术网

C# 为什么可以';t我填充子列表

C# 为什么可以';t我填充子列表,c#,list,C#,List,现在我遇到了填充一些子列表的问题。我有一个名为“list”的主列表,类型为FileInfo,包含数千个文件。我想做的是将这个主列表拆分成几个子列表,每个子列表包含一组同名文件。我是这样做的: var File = list; string[] foldername = Names.Distinct().ToArray(); List<TreeNode> N1 = new List<TreeNode>(); List<FileInfo>[] sublist =

现在我遇到了填充一些子列表的问题。我有一个名为“list”的主列表,类型为FileInfo,包含数千个文件。我想做的是将这个主列表拆分成几个子列表,每个子列表包含一组同名文件。我是这样做的:

var File = list;
string[] foldername = Names.Distinct().ToArray();
List<TreeNode> N1 = new List<TreeNode>();
List<FileInfo>[] sublist = new List<FileInfo>[foldername.Length];

for (int j = 0; j < foldername.Length; j++)
{
    N1.Add(clicked.Nodes.Add(foldername[j]));
    foreach (FileInfo file in File)
    {
        if (file.Name== N1[j].Name)
                sublist[j].Add(file);
    }
}
根本不执行,并且每个子列表都为空。我不知道怎么了。有人知道吗?谢谢你的电话

List<FileInfo>[] sublist = new List<FileInfo>[foldername.Length];
List[]sublist=新列表[foldername.Length];

实际上,它不会创建一个包含空列表的数组,而是创建一个包含空引用的数组。我认为您应该创建一个空列表的实例,并将其存储在数组中。

我可以建议您执行
Names.GroupBy(x=>x).ToList()
?(注意这仍然是字符串,而不是
FileInfo
)@jcrafael您确定
File
名称与
名称匹配吗?我认为,
if(file.Name==N1[j].Name)
永远不会计算为
true
@jcraffael N1中存储了什么?如果它们包含包含路径名的文件名,则字符串将不相同。您尝试过file.Name.Equals(N1[j].Name)而不是.NET字符串类型上的==?@Dennis_E,
Equals
=
相同,除了后者,您不必执行显式的空保护,因为您实际上没有在实例上调用方法@Maarten不完全正确,它实际上是file.Name.Substring(0,4)应该等于N1[j].Name。在我的代码中是这样的。在这里,我只想简化代码。没错!所以我的最后一句话“sublist[j].Add(file)”是用来填充它们的!我犯了一个小错误,您正在创建一个带有空引用的数组。我认为您应该创建空列表实例,并将它们设置为存储在数组中。也许您是对的。但这意味着我将创建7次“Listsublist=newlist()”,并将它们存储在一个数组中,比如“List[]Sublist={sublist1,sublist2….sublist7}”?如果是这样的话,那真的很难令人信服,尤其是当数组的长度为huge@jcraffael
for(int j=0;j
您的代码有两个输入:
列表
名称
列表
文件信息
的列表/可枚举项,
名称
是字符串列表。它们包含相同的数据吗?
List<FileInfo>[] sublist = new List<FileInfo>[foldername.Length];