有问题的IEnumerable是包含与这些文件名相关的文件名和属性的对象列表,字符串是目录名,例如" C:\ Test \ Testing"。我的目标是将这两个数据存储在一起,以便它们在某种意义上相互联系,这样可以使它们更容易一起使用,因为IEnumerable将成为DataGrid的源代码,以及表示当前目录的标签文本的字符串。
我将如何实现这一目标?我最初想过一本字典,但这似乎不适用于此。我需要能够抓住最顶级的'项目,可以这么说,只要按下按钮,我相信词典是无序的。
答案 0 :(得分:2)
List<KeyValuePair<IEnumerable, string>>
怎么样?
var list = new List<KeyValuePair<IEnumerable, string>>();
list.Add(new KeyValuePair<IEnumerable, string>(data, path));
如果这听起来太尴尬,请随意使用自定义课程。
您可以随意使用Queue<>
,Stack<>
或其他符合您需求的内容,KeyValuePair
可用于任何收藏类型。
答案 1 :(得分:2)
虽然接受的答案有效,但我建议为此创建一个类,而不是使用KeyValuePair
:
public class FilesInDirectory
{
public string Directory { get; set; }
public IEnumerable<string> FileNames { get; set; }
}
在OOP中,您应该努力避免primitive obsession。 KeyValuePair
是一种原始的,因为它没有任何意义,也无法扩展。
item.Key
然后迭代item.Value
时,事情会变得混乱 - 远不如{{1 }}和item.Directory
item.FileNames
,您必须在其他类上定义该方法,而它实际上适合在KeyValuePair