如何檢查字典列表是否包含特定字典?檢查字典列表中是否存在字典?
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問題。 –