linq - Update existing list values with values from another query -
i have linq statement calls stored proc , returns list of items , descriptions.
like so;
var q = in doh.usp_report_plc()                         i.qtygood == 0                         orderby i.partnumber                         select new parts() { partnumber = i.partnumber, description = i.descritpion.trimend() };
i have sql statement returns quantities on order , delivery date each of items. parts class has 2 other properties store these. how update existing parts list other 2 values there 1 parts list 4 values?
update
the following code brings out results.
                var = a1 in db.usp_optos_daysonhand_report_plc()                     a1.qtygood == 0                     orderby a1.partnumber                     select new parts() { partnumber = a1.partnumber, description = a1.descritpion.trimend() };              var b = b1 in db.pop10110s                     join b2 in db.iv00101s on b1.itemnmbr equals b2.itemnmbr                     //from b3 in j1.defaultifempty()                     b1.polnesta == 2 && b1.qtycance == 0                     group b1 new { itemnumber = b2.itmgedsc } g                     select new parts() { partnumber = g.key.itemnumber.trimend(), qtyonorder = g.sum(x => convert.toint32(x.qtyorder)), deliverydue = g.max(x => x.reqdate).toshortdatestring() };              var joinedlist = a.join(b,                     usp => usp.partnumber,                     oss => oss.partnumber,                     (usp, oss) =>                          new parts                          {                              partnumber = usp.partnumber,                              description = usp.description,                              qtyonorder = oss.qtyonorder,                              deliverydue = oss.deliverydue                          });              return joinedlist.tolist();      
assuming "other sql statement" returns partnumber, quantity , deliverydate, can join lists one:
var joinedlist = q.join(othersqlstatement(),                          usp => usp.partnumber,                         oss => oss.partnumber,                         (usp, oss) =>                               new parts                                     {                                         partnumber = usp.partnumber,                                         description = usp.description,                                         quantity = oss.quantity,                                         deliverydate = oss.deliverydate                                     }).tolist();   you can combine queries , in 1 join , projection:
var joinedlist = doh.usp_report_plc().                      where(i => i.qtygood == 0).                      orderby(i => i.partnumber).                      join(othersqlstatement(),                            => i.partnumber,                           o => o.partnumber,                           (i, o) =>                                 new parts                                     {                                         partnumber = i.partnumber,                                         description = i.description,                                         quantity = o.quantity,                                         deliverydate = o.deliverydate                                     }).tolist();   and again: assume have partnumber in both returned collections identify item belongs which.
edit
in case linq query syntax more readable:
var joinedlist = aelem in                  join belem in b                  on aelem.partnumber equals belem.partnumber joinedab                  abelem in joinedab.defaultifempty()                  select new part                             {                                 partnumber = aelem.partnumber,                                 description = aelem.description,                                 deliverydue = abelem == null ? null : abelem.deliverydue,                                 qtyonorder = abelem == null ? null : abelem.qtyonorder                             };   your deliverydue , qtyonorder nullable. if not, replace nulls default values. e.g. if don't have element in b , want qtyonorder 0 in resulting list, change line 
qtyonorder = abelem == null ? 0 : abelem.qtyonorder      
Comments
Post a Comment