动态查询表达式构建器

时间:2017-08-22 09:57:07

标签: c# linq expression

您好我想知道如何以动态方式实现下面的查询表达式:

DataTable _dataSourceMatrix = GetManager.Budget.GetAll().ConvertToDataTable();

switch (EntityType)
{
    case DomainType.Department:
        DataTable _departmentList = GetManager.DepartmentManager.GetAll().ConvertToDataTable();

        var _genericBudgetJoinDepartmentList = from a 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;
}

正如您所看到的,我有一个动态类型的EntityType来指示需要与_dataSourceMatrix连接的目标数据源类型。我不希望代码变得臃肿,只需要改变要加入的目标源来重写相同的查询表达式。我遇到过像QueryBuilder这样的东西,但它似乎无法实现我想成为的东西。有什么想法?

1 个答案:

答案 0 :(得分:0)

由于您必须根据http://localhost:400/rest-api/emails?id=59选择表格和字段,因此有多种方法可以设置它们,包括使用EntityType switch或创建{{1}由case索引。选择它们后,您可以处理连接:

Dictionary