【发布时间】:2016-03-07 13:17:35
【问题描述】:
如何检查字典列表是否包含特定字典?
private List<Dictionary<string, object>> detailsDictionary;
private Dictionary<string, object> selecteItem;
有没有直接的方法来检查selectedItem 是否在detailsDictionary 中?
答案:
bool isPresent=false;
foreach(Dictionary<string,object> dic in detailsDictionary)
{
if (DictionaryExtensionMethods.ContentEquals(selectedItem, dic))
{
isPresent= true;
break;
}
}
public static class DictionaryExtensionMethods
{
public static bool ContentEquals<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, Dictionary<TKey, TValue> otherDictionary)
{
return (otherDictionary ?? new Dictionary<TKey, TValue>())
.OrderBy(kvp => kvp.Key)
.SequenceEqual((dictionary ?? new Dictionary<TKey, TValue>())
.OrderBy(kvp => kvp.Key));
}
}
我手动将列表中的每个字典与所选字典进行比较,如果两个字典相等,则设置 isPresent=true。我认为这是一个漫长的过程,应该有其他简单的方法。
【问题讨论】:
-
您可以使用
Contains假设您进行参考搜索而不是搜索具有相同键和值的字典。 -
如果字典包含相同的键但具有不同的值会发生什么?
-
如果您正在考虑比较字典是否相等,那么您正在寻求错误的解决方案。请不要问 XY 问题。
-
我不想比较我想知道只是天气一个字典对象列表是否包含字典?并且在检查字典的键和值时应该完全匹配。
标签: c# list dictionary