2009-10-19 2 views
3

При назначении выбора linq неявно типизированной локальной переменной «var» я получаю следующую ошибку.Ошибка с неявно типизированными переменными

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

в

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

Словарь элементов

 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>(); 

Как это исправить?

+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)); 

Без скобок, Ваша ссылка на «Select» представляет собой метод группа - что вы конвертируете в делегат, например,

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

Это действительно не имеет смысла использовать Select в качестве метода группы в этом случае, хотя является только о выполнимо ...

+0

К сожалению, :(Как плохо я !!!!!!! !!!!! Спасибо Mr Jon – 2009-10-19 21:32:06

+0

Что мешает мне давать голоса? – 2009-10-19 21:34:19

+0

@geneliaa: Я подозреваю, что у вас недостаточно репутации. Попробуйте еще раз. –

9

Вы недостающую () после Select. В результате то, что назначается переменной, является ссылкой на метод Select, который компилятор ссылается как «группа методов».

Кстати, исходя из кода, который вы опубликовали, я не думаю, что вам нужен конечный .Select().

+0

Нет никаких безпараметрических перегрузок для Select, хотя - он должен будет там положить что-то *. –

+3

(пустой оператор выбора * не действителен.) –

+0

Да ... Я дважды проверил и удалил это заявление, когда вы отправляли свой комментарий. –

Смежные вопросы