将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, "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>();
如何纠正?
答案 0 :(得分: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
作为方法组并没有什么意义,尽管 只是可行...
答案 1 :(得分:9)
()
之后你遗失了Select
。因此,分配给变量的是对Select方法的引用,编译器将其称为“方法组”。
顺便说一句,根据您发布的代码,我认为您根本不需要跟踪.Select()
。