2011-02-03 4 views
16

나는 문자열 키에서 사전을가집니다. Linq을 사용하여 해당 키 값을 가져오고 싶습니다.linq를 사용하여 키에서 값 가져 오기

+3

키가 있다면 세계 어디에서 값을 가져 오기 위해 LINQ를 사용하고 싶습니까? 왜 'var value = myDictionary [ "myKey"];'? –

+0

사전 시험 = 새 사전 (); – PramodChoudhari

+5

질문은 여전히 ​​의미가 없습니다. Linq은 신경 쓰지 마라. 이미 가지고있는 것과 원하는 결과를 기술해라. 특정 도구 나 패턴을 사용할 필요가 없다고 생각하면 실수하지 마십시오. –

답변

42

왜 LINQ를 사용하여 사전에서 값을 가져 오시겠습니까? 당신은 Single을 사용할 수

int value = dictionary[key]; 

, 그러나 그것은 완전히 무의미 더 코드입니다 : : 그냥 사용하여 값을 얻을 수 있습니다

var keyValuePair = dictionary.Single(x => x.Key == key); 
int value = keyValuePair.Value; 
+2

동의합니다. LINQ를 사용하면 O (N)에 대한 O (1) 성능이 손실됩니다. 완전히 무의미합니다. – Enigmativity

+8

Linq 예제가 어딘가에 생산 코드를 작성한 것에 대한 끔찍한 느낌을받는 이유는 무엇입니까? –

+1

@Quick Joe Smith - 알아요. 나는 조금 밖에 죽은 것 같아. – GenericTypeTea

12

왜 내장 된 것에 Linq를 사용합니까? 그것이 의미 (쿼리 컬렉션)을 만드는

var val = myDict[key]; 

사용 Linq에, 아니 이미 잘 Dictionary 클래스에 의해 처리됩니다 뭔가.

+0

LINQ의 문제점. 더 긴 구문이라면 큰 의미가 있습니다. 다음 번에 LINQ를 더 많이 읽거나 읽기 쉽도록 확장 할 것입니다. [] 키를 사용하여 확실하게 액세스하는 것은 가장 적은 문자이지만이 경우에는 누가 신경을 씁니다. 그래서 LINQ는 당신이 말하는 사전을 쿼리하는 속도가 더 느립니 까? 누구든지 그걸 증명하기 위해 어떤 테스트를 했습니까? – PositiveGuy

+0

@CoffeeAddict - 요점은 LINQ가 모든 것에 대한 해답이 아니라는 것입니다. 인덱서와 같은 일부 기능은 LINQ를 사용하여 이동하지 않고 사용해야하는 언어 기능입니다. – Oded

+0

나는 그것이 항상 답은 아니지만 많은 경우에 매우 유용하다고 동의한다. 나는 인덱서와 LINQ – PositiveGuy

0

이 특정 인스턴스의 문자열 값을 반환합니다.

Disctionary<int, string> CustomValues = new Dictionary<int, string>(); 
    CustomValues[int]; //CustomValues[key]; 
관련 문제