Can you convert this Linq statement into Lambda without using join statements?

lambda, linq

Solution

Basically multiple `from` clauses contribute `SelectMany` calls. So your code is something like:

var x = db.Client
          .SelectMany(c => db.Prospects, (c, p) => new { c, p })
          .SelectMany(z => db.Countys, (z, ct) => new { z, ct })
          .Select(zz => new ViewModelExcelReport 
                        {
                            client = zz.z.c.ClientName,
                            cntyCounty = zz.ct.County,
                            sctSection = zz.z.p.Section
                        });

Note how this is rather more longwinded than the query expression - the compiler takes care of keeping track of all the range variables via transparent identifiers. Why do you want this in lambda form? What do you see as being the benefit? The query expression will be translated into exactly the same code, so you should use whichever one is clearer - which in this case looks like the query expression, IMO.

As an aside, I'd strongly recommend that you change your property names (in `ViewModelExcelReport`) to more idiomatic ones if you possibly can.

Problem

I see this all over the web, however I'm curious if there isn't an easier way to write this in lambda? ``` var x = from c in db.Client from p in db.Prospects from ct in db.Countys select new ViewModelExcelReport { client = c.ClientName, cntyCounty = ct.County, sctSection = p.Section }; ``` I would like to see a lambda expression that does NOT use joins, as though i am almost certain that i have seen one without the joins, but if this isn't possible ofcouse i'd like to see one with, thanks.

Original source