2016-10-27 3 views
0

사전의 값을 어떻게 설정할 수 있습니까?KeyPairValue Linq 값을 설정하는 방법

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

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

Linq에 내가 KeyValuePair가

+0

새 사전 만 반환 할 수 있습니다. – selami

+0

'KeyValuePair'는 변경할 수 없습니다. 변경할 수 없습니다. _new_ 하나를 만들거나 사전의 인덱서를 사용하여 주어진 키의 값을 업데이트하면됩니다. –

답변

1

KeyValuePair<K,V>이 하나의 키/값 쌍을 의미 불변의 객체 인 더 세터가 없다고 주장 코드를 컴파일 할 수있는 객체를

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

을 찾기 위해 쿼리 사전. KeyvaluePair 개체의 일부는 변경할 수 없습니다.

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

SingleOrDefault()null를 반환, 그래서 취하지 않을 것으로 방치 할 수 있습니다 : 당신이 바로 사전을 가지고 - 당신은 해당 키에 대한 사전의 값을 변경하고자한다면, 그것은 쉽게 할 수 있어요 계정에.

사전의 고유 한 값을 변경하지 않는 것이 목표 인 경우 다른 항목을 수행하기 전에 KeyValuePair을 변경하려는 경우 쉽게 새 KeyValuePair을 만들 수 있습니다. 아무도 그 차이를 알 수 없습니다. :

if (query != null && query.Key != 0) 
{ 
    query = new KeyValuePair<int, double>(query.Key, 3); 
} 

다시 말하지만 두 번째 버전은 사전에 저장된 값을 변경할 수 없습니다.

+1

나는 당신이'holding.QuantityPricePair [query.Key] = 3'을 의미한다고 생각한다. –

+0

@DStanley 나는 네가 옳다고 생각한다! –

관련 문제