c# - Dynamic query expression builder -




hi wondering how can achieve query expression below in dynamic way :

datatable _datasourcematrix = getmanager.budget.getall().converttodatatable();  switch (entitytype) {     case domaintype.department:         datatable _departmentlist = getmanager.departmentmanager.getall().converttodatatable();          var _genericbudgetjoindepartmentlist = in _datasourcematrix.asenumerable()                                                join b in _departmentlist.asenumerable()                                                on a.field<int>("entityid") equals b.field<int>("departmentid")                                                select new { entityname = b.field<string>("name"), period = a.field<string>("period"), value = a.field<double>("value"), entityid = a.field<int>("entityid") };          _datasourcematrix = _genericbudgetjoindepartmentlist.orderby(x => x.period).converttodatatable();          break; } 

as can see have dynamic type of entitytype indicate sort of target datasource needs join _datasourcematrix. dont want code getting bloated keep rewriting same query expression change of target source join. had came across stuff querybuilder, not seems able achieve wanted be. idea ?

since have select table , field based on entitytype, there number of ways set them, including using switch case or creating dictionary indexed entitytype. once have them selected, can process join:

datatable _datasourcematrix = getmanager.budget.getall().converttodatatable();  datatable _jointable = null; string _joinfield = string.empty;  switch (entitytype) {     case domaintype.department:         jointable = getmanager.departmentmanager.getall().converttodatatable();         _joinfield = "departmentid";         break; }   var _genericbudgetjoindepartmentlist = in _datasourcematrix.asenumerable()                                        join b in _jointable.asenumerable()                                        on a.field<int>("entityid") equals b.field<int>(_joinfield)                                        select new { entityname = b.field<string>("name"), period = a.field<string>("period"), value = a.field<double>("value"), entityid = a.field<int>("entityid") };  _datasourcematrix = _genericbudgetjoindepartmentlist.orderby(x => x.period).converttodatatable(); 




wiki

Comments

Popular posts from this blog

elasticsearch - what is the equivalent data type for geo_point in hibernate search? -

Jenkins: find build number for git commit -

firebase - How to wait value in Ionic 2 -