需要创建一个Dictionary <int,list <string =“”>&gt;使用c#</int,>

时间:2013-10-16 13:14:40

标签: c# dictionary

我的文件夹中有以下文件名

1000_A.csv
1000_B.csv
1000_C.csv
1001_A.csv
1001_B.csv

需要将以相同ID开头的文件名添加到列表中,然后需要将列表添加到ID为键的字典中

例如:
    list x包含“1000_A.csv”,“1000_B.csv”,“1000_C.csv”    将其添加到ID为1000的字典中作为密钥请帮忙。

4 个答案:

答案 0 :(得分:1)

您可以使用LINQ的{​​{1}}:

GroupBy

答案 1 :(得分:0)

var folder = GetFolder();
var files = new Dictionary<int, List<string>>();

foreach (var file in folders) 
{
    int id = Convert.ToInt32(file.Substring(0, file.IndexOf('_'));

    if (files.Any(x => x.Key == id))
        files[id].Add(file);
    else 
    {
        var newList = new List<string>(); 
        newList.Add(file);

        files.Add(id, newList);
    }
}

答案 2 :(得分:0)

var listOfFiles = ...; // assuming you can read the list of filenames 
                       //  into a string[] or IList<string>

var d = listOfFiles.GroupBy( f => f.Substring( 0, f.IndexOf( '_' ) ) )
    .ToDictionary( g => g.Key, g => g );

答案 3 :(得分:0)

例如CSV csv文件列表

循环播放CSV列表:

Dictionary<string, int> Dict = new Dictionary<string, int>();
List<string> files = new List<string>();
foreach (string path CSV)
{
     if(!ContainsKey(path.Substring(0,3))
       {
         files.Add(path);
         Dict.Add(path.Substring(0,3),files);
       }
     else
      {
       files.Add(path);
       Dict[path.Substring(0,3)].Add(file);
      }
  }