我需要返回两个值的列表。 我试过字典,但第一个参数是关键,在我的情况下,它会重复。 我的目录需要回到这样的事情:没有KEY约束的字典或KeyValuePair
经理约翰 - Zambers
开发者 - 保罗·迈尔斯
开发者 - 约翰Zambers
测试仪 - 玛丽·玛丽
等.. - 等...
我不想创建我自己的类来表示此列表。 Dot.Net有一个代表它的内置类型吗?有点像List()?
在此先感谢。
我需要返回两个值的列表。 我试过字典,但第一个参数是关键,在我的情况下,它会重复。 我的目录需要回到这样的事情:没有KEY约束的字典或KeyValuePair
经理约翰 - Zambers
开发者 - 保罗·迈尔斯
开发者 - 约翰Zambers
测试仪 - 玛丽·玛丽
等.. - 等...
我不想创建我自己的类来表示此列表。 Dot.Net有一个代表它的内置类型吗?有点像List()?
在此先感谢。
你可以使用System.Tuple<T1, T2>
类,e.g ,:
List<Tuple<String, String>> people = new List<Tuple<String, String>>();
people.Add(Tuple.Create("Manager", "John Zambers"));
// etc.
然而,这有什么错创建自己的类?它们几乎可以自我记录,特别是在这种简单的情况下(例如,很明显Name
字段中会出现什么内容)。例如:
public class Person
{
public string Role { get; set; }
public string Name { get; set; }
}
附注:我不知道你的应用领域还是什么都可能的角色/你有冠军,但如果你根据这个值,它看起来像一个做任何形式的处理代替使用enum
的好地方。例如,
public enum Roles
{
Manager,
Developer,
Tester
}
这是怎么回事?
Dictionary<string, List<string>> role_names = new Dictionary<string, List<string>>();
List<string> lst;
role_names.Add("Manager", lst = new List<string>());
lst.Add("John Zambers");
role_names.Add("Developer", lst = new List<string>());
lst.Add("Paul Myers");
lst.Add("John Zambers");
role_names.Add("Tester", lst = new List<string>());
lst.Add("Mary Marie");
假设你想要一个键控查找,这可能是最好的选择,而无需编写自定义集合。子类型为自定义类,您可以轻松(通过LINQ)提供包中所有值的平面视图。 – 2011-05-25 19:41:14
试试这个:
List<KeyValuePair<string,string>> list = new List<KeyValuePair<string,string>>();
list.Add(new KeyValuePair<string, string>("Manager", "John"));
list.Add(new KeyValuePair<string, string>("Manager", "John"));
Console.WriteLine(list[0].Key);
您也可以使用类似System.Web.UI.Pair
(这是不通用的,但有时也很方便)。
但是,只有在第一件事是位置而第二件是名称的情况下,它才是真正重要的。如果你想把它当作另一对东西 - 使用KeyValuePair或Pair。但是如果它是位置和名称对的列表,那么为它制作特殊类型可能是一个好主意。
.NET 确实有这样的事情,但你不能直接使用它。它是Lookup
,并在LINQ中由ToLookup
方法返回。
如果您可以设法使用ToLookup
来处理您的数据,它会让您的生活变得更加轻松。
如果您愿意,您可以随时使用my implementation of Lookup
从Edulinq。基本上这两个实现从程序集外部是不可改变的,但是如果你想要,你可以改变我的可变性:)
+1击败我。链接:http://msdn.microsoft.com/en-us/library/system.tuple。aspx – 2011-05-25 19:21:14
Or List = new List 。请记住,元组不可改变。所以如果你需要在创建Tuple之后修改这些条目,那么你不会对你有任何好处。 –
PedroC88
2011-05-25 19:24:26
@Pedro'DictionaryEntry'在这里看起来不太合适 - 虽然它在技术上是可行的,但是使用DictionaryEntry具有一些固有的含义,即Key在集合中是唯一的(这显然不是)。 – Donut 2011-05-25 19:26:19