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