首页 > 解决方案 > ASP.NET Core 模型按国外字段排序

问题描述

我有一张表TableA,外键指向另一张表TableB。我想获得一个列表,TableA但需要按TableB. 我想要用户选择的不同列的查询顺序。

表A:

class TableA 
{
    public int Id { get; set; }
    public int TableBId { get; set; }
    public DateTime RecordDate { get; set; }
    public string Description { get; set; }

    public TableB TableB { get; set; }
}

表B:

类 TableB { public int Id { get; 放; } 公共字符串描述 { 获取;放 } }

控制器方法:

string SortField = "TableB.Description";
string Order = "A";
var DataSet = from q in DB.TableA.Include(x => x.TableB) select q;

if (Order == "A")
{
    DataSet = DataSet.OrderBy(x => EF.Property<object>(x, SortField));
}
else 
{
    DataSet = DataSet.OrderByDescending(x => EF.Property<object>(x, SortField));
}

假设SortField是可变的,并且可以由用户更改。我测试了中的字段名SortField是否在TableA,例如DescriptionRecordDate,上面的代码没有问题,但是如果SortField来自TableB,则会引发异常错误。

谢谢!

标签: c#asp.net-core

解决方案


推荐阅读