2009-10-19 5 views
3

암시 적으로 입력 한 로컬 변수 "var"에 linq 선택을 할당하면 오류가 발생하여 이 표시됩니다. 요소암시 적으로 입력 한 변수의 오류

 Dictionary<int, string> emails = new Dictionary<int, string>(); 
     emails.Add(1, "[email protected]"); 
     emails.Add(2, "[email protected]"); 
     emails.Add(3, "Rose"); 
     emails.Add(4, "Ana"); 
     emails.Add(5, "[email protected]"); 
     Dictionary<int, string> dc = new Dictionary<int, string>(); 

root : var mailgroup = emails.Where(p =>IsValidFormat(p.Value)).Select; 

사전에

Error :Cannot assign method group to an implicitly-typed local variable

어떻게 그것을 해결하기 위해?

+0

가능한 복제본 [ASP.NET Processing lambdas] (http://stackoverflow.com/questions/1590805/asp-net-processing-lambdas) – Randolpho

답변

12

무엇을 기대합니까? 당신은 아마 같은이 실제 메서드 호출을 만들고 싶어 :

var mailgroup = emails.Where(p =>IsValidFormat(p.Value)) 
         .Select(p => p.Value); 

아니면 그냥 키/값 쌍을 원하는 경우, 당신은 사용할 수 있습니다 : "선택"

var mailgroup = emails.Where(p =>IsValidFormat(p.Value)); 

을 제거 전적으로. "선택"당신의 참조가 메서드 그룹, 대괄호없이

var mailgroup = emails.Values.Where(p =>IsValidFormat(p)); 

- : 당신이을 경우

그냥 내가 사용하는 것이 좋습니다 것 (첫 번째 코드에 따라) 값을 원하는 대리인으로 전환 할 수있는 일종의 그것은 단지에 대한 가능한하지만

Func<int> x = SomeMethod; // Where SomeMethod is declared as "int SomeMethod()" 

정말 ..., 감각이 경우 방법 그룹으로 Select를 사용하는 Select()을 놓치고

+0

죄송합니다., 얼마나 나쁘습니까 !!!!!!! !!!!! 감사합니다 Mr Jon –

+0

무엇이 나를 투표 할 수 없게합니까? –

+0

@geneliaa : 충분한 평판이 없다고 생각됩니다. 지금 다시 시도하십시오. –

9

하지 않습니다. 결과적으로 변수에 할당되는 것은 컴파일러가 '메서드 그룹'을 참조하는 Select 메서드에 대한 참조입니다.

덧붙여 말하자면, 게시 한 코드를 기반으로 나는 후행 .Select()이 전혀 필요하지 않다고 생각합니다.

+0

Select에는 매개 변수없는 오버로드가 없습니다. * 뭔가 *를 입력해야합니다. –

+3

(비어있는 select 문 *은 유효하지 않습니다.) –

+0

예 ... 귀하의 의견을 게시하는 동안 해당 진술을 다시 확인하고 제거했습니다. –

관련 문제