2011-12-21 2 views
1

새로운 클래스를 선택하는 중첩 된 큰 중첩 있지만 "B"값이있는 즉시 "TestDictionary"새 KeyValuePair 추가하고 싶습니다. .중첩 된 선택에서 새 사전에 KeyValuePair를 추가합니다.

from a ... from b ... 
select new c 
{ 
    TestC = b.Foo, 
    TestDictionary = new Dictionary(b.Parameters.ToDictionary(
        x => x.ParameterKey, x => (object)x.ParameterValue)) 
// .Add(new.. "SomeKey", b.SomeValue) ? 
    }).ToList() 

Add 메서드를 사용하려고 시도했지만 작동하지 않습니다. 새로 생성 된 사전에 즉시 하나의 keyvalue 쌍을 추가 할 수 있습니까? 사전에

감사

/라세

+1

(...)은'Dictionary'의'방법을 클래스는 이와 같이 동적 문 안에서 사용할 수있는 값을 반환하지 않습니다. 내 충고는 무겁게 임베디드 Linq 진술로 매우 지저분해질 수있는 뭔가를 더 리팩토링하는 것입니다. –

+0

Enumerbale.Concat은 두 개의 IEnumerables를 연결합니다. b.Parameters의 복잡성에 따라 사전으로 변환하기 전에 b.Parameters에 무언가를 추가하는 경우 도움이됩니다. – Chris

+0

그래,하지만 지금은 크리스마스 전에 일종의 quick'n'dirty 수정이 필요해. –

답변

2

당신은 컬렉션 이니셜 라이저 구문을 사용할 수 있어야합니다. Add() 방법은 하나 개 이상의 매개 변수를 사용하면 Dictionary와 마찬가지로, 당신은 중괄호 각 포장 : 나는이`추가하기 때문입니다 추측하고있어

from a ... from b ... 
select new c 
{ 
    TestC = b.Foo, 
    TestDictionary = new Dictionary(b.Parameters.ToDictionary(
        x => x.ParameterKey, x => (object)x.ParameterValue)) 
       { 
        {"SomeKey", b.SomeValue}, 
        //{"SomeOtherKey", b.FooBar} //if you had more than one… 
       }; 
}).ToList() 
+0

고맙다 Jay :) –

관련 문제