在初始化c#之外的元组中添加元素

时间:2014-06-29 21:07:00

标签: c# tuples

我是编程新手,我用

创建了一个元组列表
var tupleList = new List<Tuple<string, string>> { };

稍后在代码中,我想添加一个像

这样的元素
tupleList.Add(string1,string2);

但是.Add不支持这个吗?

基本上,我正在经历一个循环并添加到元组,后来我想通过元组搜索一个示例字符串,所以我的第二个问题是如何搜索tupleList.Item1并获取所有对等于,例如string10?我看到了字典值的答案,但我可以为元组做同样的事吗?

var matches = tupleList.Where(pair => pair.Item1.Equals(string10))
                  .Select(pair => Item2.Key);

我不知道这是否有意义,这是原始代码:

var matches = dict.Where(pair => pair.Value == "abc")
                  .Select(pair => pair.Key);

2 个答案:

答案 0 :(得分:4)

List<T>没有任何特定的方法来处理元组。它适用于任何类型T。如果要将新项目添加到列表,则应创建列表类型T的项目并将其传递给列表。添加新元组:

tupleList.Add(Tuple.Create(string1,string2));

仅搜索过滤元组列表。如果要将结果作为结果,则不应使用Select运算符投影元组:

var matches = tupleList.Where(pair => pair.Item1 == string10);

注意:我不喜欢元组的无意义名称Item1,Item2等,这很难理解。考虑创建具有描述性名称的属性的自定义类。

答案 1 :(得分:0)

我会说为什么为元组做同样的事情?

如果您使用元组来表示键值对,只需坚持键值对,这是字典包含的集合。如果你对一个超过2个值的行建模,我可能更喜欢强类型模型,你可以在LINQ查询中更明确。