У меня есть два словаря, и я хочу их сравнить. Я хочу игнорировать случай и возвращать только false, если они имеют разные значения. Вот мой код.Как сравнить значения словаря, игнорирующие случай
var dic1 = new Dictionary<String, String>(StringComparer.CurrentCultureIgnoreCase);
dic1.Add("Key 2", "Value 2");
dic1.Add("Key 1", "Value 1");
var dic2 = new Dictionary<String, String>(StringComparer.CurrentCultureIgnoreCase);
dic2.Add("Key 1", "Value 1");
dic2.Add("Key 2", "Value 2");
var areEqual = dic1.OrderBy(r => r.Key).SequenceEqual(dic2.OrderBy(r => r.Key));
Console.WriteLine(areEqual);
Как вы можете видеть, я использую метод SequenceEqual класса словаря для сравнения двух словарей. Я заказал их с помощью ключа, чтобы результат не был ложным, если позиция ключа отличается. Проблема, которую я не могу понять, состоит в том, как игнорировать случай в ключе и значениях и возвращать false, только если значения различны. В моем случае значение 1 и VALUE 1 равны, и результат должен быть правдой. Это не мое дело.
Спасибо Тим Я использовал свой собственный пользовательский компаньон, но, как ваше решение, лучше, так что он ответил как ответ. Благодаря! –
@AfrazAli: _ «Я заказал их по ключу, чтобы результат не был ложным, если позиция ключа различна». _ Нужно ли вам принимать ключ или нет? Вы можете напрямую использовать 'dic1.Values', чтобы сравнивать только значения. Поэтому, возможно, лучше использовать 'dic1.Values.OrderBy (v => v) .SequenceEqual (dic2.Values ...' –
Да, Тим, я хочу также скомпоновать ключи. Ваше решение отлично работает в соответствии с моими требованиями. Спасибо! –