i have linq queries,when run queries got result,which shown in img below
var salesinvdets = (from si in customertransactions si.transtypeid == 10 group new {si} new{ month=si.period==1?"jan-2015":si.period==2?"feb-2015":si.period==3?"mar-2015":si.period==4?"apr-2015":si.period==5?"may-2015": si.period==6?"jun-2015":si.period==7?"jul-2015":si.period==8?"aug-2015":si.period==9?"sep-2015":si.period==10?"oct-2015": si.period==11?"nov-2015":si.period==12?"dec-2015":"", month2=si.period==13?"jan-2016":si.period==14?"feb-2016":si.period==15?"mar-2016":si.period==16?"apr-2016":si.period==17?"may-2016": si.period==18?"jun-2016":si.period==19?"jul-2016":si.period==20?"aug-2016":si.period==21?"sep-2016": si.period==22?"oct-2016":si.period==23?"nov-2016":si.period==24?"dec-2016":"", period=si.period } g select new { month=g.key.month, month2=g.key.month2, amount = g.sum(x=>x.si.ovamount)//.sum(x=>x.si.ovamount-(x.si.ovdiscount+x.si.ovfreight))//(si.ovamount - (si.ovdiscount + si.ovfreight)) }).dump();
i got result during run query,but dont need that
i need result that,pls achieve task
issue exist due faulty groupby
statement, based on value of si.period
, 1 of values specified in month
, month2
, therefore in each grouping either month
or month2
empty string ""
, both never filled, result have shown, solution same separate grouping based on month
, month2
, follows:
var salesinvdetsmonthlist = (from si in customertransactions si.transtypeid == 10 group new {si} new{ month=si.period==1?"jan-2015":si.period==2?"feb-2015":si.period==3?"mar-2015":si.period==4?"apr-2015":si.period==5?"may-2015": si.period==6?"jun-2015":si.period==7?"jul-2015":si.period==8?"aug-2015":si.period==9?"sep-2015":si.period==10?"oct-2015": si.period==11?"nov-2015":si.period==12?"dec-2015":"", period=si.period } g select new { month=g.key.month amount = g.sum(x=>x.si.ovamount)//.sum(x=>x.si.ovamount-(x.si.ovdiscount+x.si.ovfreight)) }).where( x => x.month != "").tolist(); // removing empty month values / default values var salesinvdetsmonth2list = (from si in customertransactions si.transtypeid == 10 group new {si} new{ month2=si.period==13?"jan-2016":si.period==14?"feb-2016":si.period==15?"mar-2016":si.period==16?"apr-2016":si.period==17?"may-2016": si.period==18?"jun-2016":si.period==19?"jul-2016":si.period==20?"aug-2016":si.period==21?"sep-2016": si.period==22?"oct-2016":si.period==23?"nov-2016":si.period==24?"dec-2016":"", period=si.period } g select new { month=g.key.month, month2=g.key.month2, amount2 = g.sum(x=>x.si.ovamount)//.sum(x=>x.si.ovamount-(x.si.ovdiscount+x.si.ovfreight))//(si.ovamount - (si.ovdiscount + si.ovfreight)) }).where( x => x.month != "").tolist(); // removing empty month values / default values
now need merge 2 lists created above:
salesinvdetsmonthlist, salesinvdetsmonth2list
for assume, have same number of records,, need combined entity like:
public class salesinvdetsmonthcombined { public string month {get; set;} public string month2 {get; set;} public int amount {get; set;} public int amount2 {get; set;} } int totalcount = salesinvdetsmonthlist.count; list<salesinvdetsmonthcombined> result = new list<salesinvdetsmonthcombined>(); (int index=0, index < totalcount; index ++) { result.add(new salesinvdetsmonthcombined ( month = salesinvdetsmonthlist[index].month, month2 = salesinvdetsmonth2list[index].month2, amount = salesinvdetsmonthlist[index].amount, amount2 = salesinvdetsmonth2list[index].amount2 )); }
however please note, above code based on assumption have provided, there matching records, in case there's discrepancy in number of records, need add default, else fail
Comments
Post a Comment