KeyPairValue Linq如何设置值

时间:2016-10-27 19:03:48

标签: linq dictionary

如何设置Dictionary的值?

public class Holding
{
    public Dictionary<int, double> QuantityPricePair { get; set; }

    public Holding()
    {
        QuantityPricePair = new Dictionary<int, double>();
    }
}

Linq查询找对象

KeyValuePair<int, double> query = holding.QuantityPricePair.Where(h => h.Value == 7).SingleOrDefault();
if (query.Key != 0)
{
    query.Value = 3;
}

我无法编译代码,声称KeyValuePair没有setter

1 个答案:

答案 0 :(得分:1)

KeyValuePair<K,V>是一个不可变对象,它引用字典中的一个键/值对。您无法更改KeyvaluePair对象的任何部分。但是如果你想更改字典中该键的值,这很容易做到 - 你已经在那里得到了字典:

if (query != null && query.Key != 0)
{
    holding.QuantityPricePair[query.Value] = 3;
}

SingleOrDefault()可以返回null,因此请不要忽略这一点。

如果目标不是在那里更改字典自身的值,那么如果您只是想在使用它做其他事情之前更改KeyValuePair,则可以轻松创建新的{ {1}}相反,没有人会知道差异:

KeyValuePair

再次注意,第二个版本不可能改变存储在字典中的值。