如何存储IEnumerable和一起描述它的字符串

时间:2014-09-10 09:17:36

标签: c# wpf string ienumerable

有问题的IEnumerable是包含与这些文件名相关的文件名和属性的对象列表,字符串是目录名,例如" C:\ Test \ Testing"。我的目标是将这两个数据存储在一起,以便它们在某种意义上相互联系,这样可以使它们更容易一起使用,因为IEnumerable将成为DataGrid的源代码,以及表示当前目录的标签文本的字符串。

我将如何实现这一目标?我最初想过一本字典,但这似乎不适用于此。我需要能够抓住最顶级的'项目,可以这么说,只要按下按钮,我相信词典是无序的。

2 个答案:

答案 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 obsessionKeyValuePair是一种原始的,因为它没有任何意义,也无法扩展。

  • 含义:当您在列表上进行迭代并处理item.Key然后迭代item.Value时,事情会变得混乱 - 远不如{{1 }}和item.Directory
  • 扩展:您需要定义一些从这些项中提取数据的方法,或者以某种方式处理它们 - 通常,这些方法在数据项本身上更好。例如,您可能希望获得实际文件对象的列表。使用item.FileNames,您必须在其他类上定义该方法,而它实际上适合在KeyValuePair
  • 的主页上