如何检查字典列表是否包含特定字典?检查字典列表中是否存在字典?
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'假设您做了参考搜索,而不是搜索具有相同键和值的字典。 – juharr
如果字典包含相同的密钥但具有不同的值,会发生什么情况? –
如果你正在考虑比较字典的平等,那么你正在追求错误的解决方案。请不要问XY问题。 –