Accepted answer

What are you expecting it to do? You probably want to make an actual method call there, such as:

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

Or if you just want the key/value pairs, you can just use:

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

and remove the "Select" entirely.

If you do just want the values (as per the first code snippet) I'd suggest using:

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

Without any brackets, your reference to "Select" is a method group - the kind of thing you'd convert to a delegate, e.g.

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

It doesn't really make sense to use Select as method group in this case, although it is just about feasible...


You're missing () after Select. As a result, what's being assigned to the variable is a reference to the Select method, which the compiler refers to as a 'method group'.

Incidentally, based on the code that you've posted I don't think that you need the trailing .Select() at all.

Related Articles