可能重复:
.NET 字典中的重复键?
我需要创建一个Collection<string,object>
,一个是字符串,另一个是对象。我不能使用字典,因为没有一个项目是唯一的。
有什么方法可以创建List<T,T>
吗?因为我不想创建一个对象来保存两个值,只是为了在单个 foreach 循环中使用它。
谢谢
可能重复:
.NET 字典中的重复键?
我需要创建一个Collection<string,object>
,一个是字符串,另一个是对象。我不能使用字典,因为没有一个项目是唯一的。
有什么方法可以创建List<T,T>
吗?因为我不想创建一个对象来保存两个值,只是为了在单个 foreach 循环中使用它。
谢谢
试试List<Tuple<string, object>>
。然后,您可以通过列表获得通常的 linq 支持以获取每个Tuple<string, object>
.
该类从 .NET 4 开始可用,但您可以轻松模仿自己的元组Tuple<,>
类型,而无需太多麻烦。
我认为元组根据它们的项目值被认为是相等的,但是object
这可能是引用相等,因此不应该是相等的......如果这有任何意义!
更多关于平等的信息:
更新:
如果您需要将项目列表与键关联以进行查找,则重复的问题答案会正确突出显示Lookup
类(在您的情况下为Lookup<string, object>
),这将比List<Tuple<string, object>>
.
您可以使用
List<KeyValuePair<string,object>>
或者
Dictionary<string,List<object>>
也许您可以使用Tuple类创建一个元组列表?像这样:
List<Tuple<String, Object>> list = new List<Tuple<String, Object>>();
尝试创建您的自定义类并使用它
class KeyValue<Tkey,TValue>
{
public Tkey Key {get;set;}
public TValue Value {get;set;}
}
使用喜欢
List<KeyValue<string,string>> list = new List<KeyValue<string,string>>();
如果您使用的是 .NET 4,则可以使用 Tuple ( 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
您是否考虑过使用“分组依据”然后将分组结果转换为字典?