c# - Lambda Expression for join -
public class coursedetail { public coursedetail(); public string courseid { get; set; } public string coursedescription { get; set; } public long courseser { get; set; } } public class refuidbycourse { public long courseser { get; set; } public double delivereddose{ get; set; } public double planneddose{ get; set; } public string refuid { get; set; } } public class refdata { public double dailydoselimit { get; set; } public string refname { get; set; } public string refuid { get; set; } public double sessiondoselimit { get; set; } } public class coursesummary { public long courseser { get; set; } public double delivereddose{ get; set; } public double planneddose{ get; set; } public list<refdata> lstrefdata {get;set;} }
for 1 courseser there can multiple refuid in refuidbycourse , every refuid there 1 record in refdata
i have list of coursedetail,refuidbycourse , refdata courseser exist in coursedetail have create list of coursesummary.
one thing can do loop coursedetail , fetch respective refdata using linq query , create object of coursesummary , add in list.
but there way 1 linq query instead of doing loop through
the lambda join bit involved - here's simple example:
list<person> people = new list<person>(); list<persontype> peopletypes = new list<persontype>(); var joined = people.join(peopletypes, peoplekey => peoplekey.persontype, peopletypeskey => peopletypeskey.typeid, (person, personetype) => new { name = person.name, typeid = personetype.typeid });
i find query syntax lot more readable lambdas joining
var joined2 = p in people join ptype in peopletypes on p.persontype equals ptype.typeid p.name.startswith("whatever") select new { name = p.name, typeid = ptype.typeid };
Comments
Post a Comment