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

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -