我需要创建一个Collection<string,object>
,一个是字符串,另一个是对象。
我不能使用词典,因为没有一个项目是唯一的。
有没有办法创建List<T,T>
?因为我不想创建一个对象来保存这两个值只是为了在单个foreach循环中使用它。
由于
答案 0 :(得分:25)
试试List<Tuple<string, object>>
。然后,您可以在列表中获得通常的linq支持,以获得每个Tuple<string, object>
。
从.NET 4开始,Tuple<,>
class可用,但您可以轻松模仿自己的元组类型,而不会有太多麻烦。
我认为元组根据其项目值被认为是相等的,但是使用object
这可能是引用等于,因此不应该相等......如果这有意义的话!
有关平等的更多信息:
<强>更新强>
如果您需要将项列表与键相关联以进行查找,则重复的问题答案会正确突出显示Lookup
类(在您的情况下为Lookup<string, object>
),这将表达你的意图比List<Tuple<string, object>>
更清晰。
答案 1 :(得分:6)
你可以使用
List<KeyValuePair<string,object>>
或
Dictionary<string,List<object>>
答案 2 :(得分:4)
尝试创建自定义类并使用它
class KeyValue<Tkey,TValue>
{
public Tkey Key {get;set;}
public TValue Value {get;set;}
}
使用
List<KeyValue<string,string>> list = new List<KeyValue<string,string>>();
答案 3 :(得分:4)
也许你可以使用Tuple类创建一个元组列表?像这样:
List<Tuple<String, Object>> list = new List<Tuple<String, Object>>();
答案 4 :(得分:2)
如果您使用的是.NET 4,则可以使用元组(http://msdn.microsoft.com/en-us/library/system.tuple.aspx)对象:
var list = new List<Tuple<string, object>>();
如果你使用的是早期版本的.NET,你可以自己实现Tuple类:Equivalent of Tuple (.NET 4) for .NET Framework 3.5
答案 5 :(得分:0)
您是否考虑过使用“分组依据”然后将分组结果转换为字典?