【发布时间】:2017-04-17 12:45:06
【问题描述】:
我正在尝试浏览文件夹中的所有 *.txt 文件以获取其中的元数据。
void SearchAndPopulate(string path, string searchText)
{
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] files = di.GetFiles("*.txt");
Dictionary<String, dynamic> dictionary = new Dictionary<String, Object>();
int i = 0;
foreach (FileInfo file in files)
{
dictionary.Add(String.Format("name{0}", i.ToString()), i);
using (StreamReader sr = new StreamReader(file.FullName))
{
string content = sr.ReadToEnd().ToLower();
if (content.Contains(searchText.ToLower()))
{
dictionary["name"+i] = File
.ReadAllLines(file.FullName)
.Select(y => y.Split('='))
.Where(y => y.Length > 1)
.ToDictionary(y => y[0].Trim(), y => y[1]);
var temp = dictionary["name" + i];
listBox1.Text = temp["NUM_CLIENT"];
}
}
i++;
}
}
我得到 “已添加具有相同键的项目” 用于字典变量。
【问题讨论】:
-
您在字典的 foreach 循环中添加 I 的值。兄弟每次都不能加同一个。
-
据我所知,您首先不需要具有动态类型的字典,因为您只使用带有键
"name" + i和i的项目在最后递增每个循环的。只需为您的 Linq 结果使用局部变量。 -
@Botonomous 与
i不同,因为在循环的末尾有一个i++; -
你有多个值的键,所以你需要 Dictionary
> -
显然是这样。
标签: c# dictionary