复杂类型的MVC WebGrid
本文关键字:WebGrid MVC 类型 复杂 | 更新日期: 2023-09-27 18:17:08
我正在创建一个webgrid。我的一个专栏是集合复杂类型的:
[Table("RequestStatus",Schema="dbo")]
public class RequestStatus
{
[Key]
public int Id { get; set; }
public string Status { get; set; }
}
和在我的实体中:
public virtual ICollection<RequestStatus> RequestStatuses { get; set; }
在我的webgrid中,我希望能够按照这个属性以类似于这样的方式排序:
RequestStatuses.Last().Status
我在实体中创建了一个只读属性:
[NotMapped]
public string LastRequestStatus
{
get { return this.RequestStatuses.Last().Status; }
}
但是我得到:
系统。NotSupportedException:指定的类型成员'LastRequestStatus'在LINQ到实体中不被支持。只支持初始化式、实体成员和实体导航属性
我认为这是因为这个属性没有映射到db字段。是否有一种方法可以处理这种情况,或者我需要为此编写自定义排序?
提前感谢!
试试这个:
get { return this.RequestStatuses.ToList().Last().Status; }
或
get { return this.RequestStatuses.OrderByDescending(ee=>ee.YourPropery).First().Status; }
读这个
LINQ To Entities不识别Last方法。真的吗?
我创建了某种自定义排序。当我发出查询字符串sort={属性不存在}webgrid不做排序,但给出的结果是。如果我编辑该列的标题以发出一个带有_LastRequestStatus的查询字符串(在我的情况下),我检查控制器是否querystring["sort"]等于这个字符串(_LastRequestStatus),做适当的排序(ASC,DESC - sortdir在querystring),并将该列表传递给视图,就像我之前做的那样。从那里,webgrid按需要处理分页,而不需要干预。所有这些都可以在视图+控制器中完成,而不需要客户端脚本(通常我没有问题,但我认为这种方式更具可读性,特别是如果我在几个月内看到此代码)。