将linq选择分配给隐式类型的局部变量"var"时,我收到以下错误.
Error :Cannot assign method group to an implicitly-typed local variable
在
root : var mailgroup = emails.Where(p =>IsValidFormat(p.Value)).Select;
Run Code Online (Sandbox Code Playgroud)
元素字典
Dictionary<int, string> emails = new Dictionary<int, string>();
emails.Add(1, "Marry@yahoo.com");
emails.Add(2, "Helan@gmail.com");
emails.Add(3, "Rose");
emails.Add(4, "Ana");
emails.Add(5, "Dhia@yahoo.com");
Dictionary<int, string> dc = new Dictionary<int, string>();
Run Code Online (Sandbox Code Playgroud)
怎么纠正呢?
Jon*_*eet 12
你有什么期望呢?您可能希望在那里进行实际的方法调用,例如:
var mailgroup = emails.Where(p =>IsValidFormat(p.Value))
.Select(p => p.Value);
Run Code Online (Sandbox Code Playgroud)
或者,如果您只想要键/值对,则可以使用:
var mailgroup = emails.Where(p =>IsValidFormat(p.Value));
Run Code Online (Sandbox Code Playgroud)
并完全删除"选择".
如果你不只是希望值(按照第一个代码段),我建议使用:
var mailgroup = emails.Values.Where(p =>IsValidFormat(p));
Run Code Online (Sandbox Code Playgroud)
没有任何括号,您对"选择"的引用是一个方法组 - 您转换为委托的事物,例如
Func<int> x = SomeMethod; // Where SomeMethod is declared as "int SomeMethod()"
Run Code Online (Sandbox Code Playgroud)
它并没有真正意义的使用Select在这种情况下,方法组,虽然是只是可行?
你错过()了Select.因此,分配给变量的是对Select方法的引用,编译器将其称为"方法组".
顺便说一句,根据您发布的代码,我认为您根本不需要跟踪.Select().