gpt4 book ai didi

c# - 使用 LINQ to SQL 将具有外键的 Gridview 列排序到不同的实体

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:39 25 4
gpt4 key购买 nike

在此实现中,我们必须实体“公司”和“公司”。连接到数据库后,我使用 LINQ to SQL 设计器创建实体对象。公司实体的主页是显示其所属的法人;所以在网格中我们将有这些列:

公司名称 |公司名称 |说明

公司表只有公司ID,没有公司名称;但是 LINQ 提供了加载公司对象和访问公司记录名称的能力。

由于为网格列启用了排序,用户可以单击列以按该列(DESC 或 ASC)对结果进行排序

排序对 CompanyNameDescription 有效,但对 *CorporateName * 无效!

下面是对网格数据进行排序的代码

var entityType = typeof(Entities.Company);

        //load company list based on Business Unit selected
var companyList = LoadCompanyRecords());// return type IQueryable<Entities.Company>

//if filters are used -> filter the results
companyList = FilterResults(companyList);//return type is IQueryable<Entities.Company>

// order by work flow starts
const string ascSortMethodName = "OrderBy";
const string descSortMethodName = "OrderByDescending";
var sortMethod = ascSortMethodName;
var orderdirection = GetSortDirection(e.SortExpression);

if (orderdirection == "DESC")
sortMethod = descSortMethodName;

//var entityType = typeof(Entities.Company);
var property = entityType.GetProperty(e.SortExpression);
var parameter = Expression.Parameter(entityType, "p");
var propertyAccess = Expression.MakeMemberAccess(parameter, property);
var orderByExp = Expression.Lambda(propertyAccess, parameter);

MethodCallExpression resultExp = Expression.Call(
typeof(Queryable),
sortMethod,
new Type[] { entityType, property.PropertyType },
companyList.Expression,
Expression.Quote(orderByExp));

var result = companyList.Provider.CreateQuery<Entities.Company>(resultExp);

gvAssets.DataSource = result;
gvAssets.DataBind();

有没有人遇到过这个?处理不属于当前实体的列的最佳处理方式是什么?或者我应该考虑编写一个 sql 连接查询还是一个存储过程?

感谢任何帮助。

最佳答案

对此的临时解决方案是检查该列名称并确保它具有自己的排序功能,如下所示:

var sortColumn = e.SortExpression;

        if (sortColumn == "CorporateGroupName")
{
if (orderdirection == "DESC")
result = companyList.OrderByDescending(x => x.CorporateGroup.CorporateGroupName).ToList();
else
result = companyList.OrderBy(x => x.CorporateGroup.CorporateGroupName).ToList();
}

关于c# - 使用 LINQ to SQL 将具有外键的 Gridview 列排序到不同的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19963474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com