Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 复杂类型的MVC WebGrid_C#_Asp.net Mvc_Entity Framework_Webgrid - Fatal编程技术网

C# 复杂类型的MVC WebGrid

C# 复杂类型的MVC WebGrid,c#,asp.net-mvc,entity-framework,webgrid,C#,Asp.net Mvc,Entity Framework,Webgrid,我正在创建一个webgrid。我的一列属于集合复杂类型: [Table("RequestStatus",Schema="dbo")] public class RequestStatus { [Key] public int Id { get; set; } public string Status { get; set; } } 在我的实体中: public virtual ICollection<RequestStatus> RequestSt

我正在创建一个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; }
    [NotMapped]
    public string LastRequestStatus
    {
        get { return this.RequestStatuses.Last().Status; }
    }
我在实体中创建了只读属性:

    public virtual ICollection<RequestStatus> RequestStatuses { get; set; }
    [NotMapped]
    public string LastRequestStatus
    {
        get { return this.RequestStatuses.Last().Status; }
    }
但我得到:

System.NotSupportedException:指定的类型成员“LastRequestStatus”在LINQ to实体中不受支持。仅支持初始值设定项、实体成员和实体导航属性

我假设这是因为这个属性没有映射到db字段。是否有一种方法可以直接处理这种情况,或者我需要为此编写自定义排序

提前谢谢

试试这个:

get { return this.RequestStatuses.ToList().Last().Status; }

读一下这个


我创建了一种自定义排序。 当我在查询字符串sort={property which not exist}中发出时,webgrid不进行排序,而是按原样给出结果。 如果我编辑此列的标题以发出带有_LastRequestStatus的查询字符串(在我的示例中),我将签入控制器,如果querystring[“sort”]等于此字符串(_LastRequestStatus),执行适当的排序(ASC,DESC-sortdir in querystring),并像以前一样将该列表传递给视图。
从这里开始,webgrid无需干预即可根据需要处理分页。所有这些都可以在view+controller中完成,而不需要客户端脚本(通常我对客户端脚本没有问题,但我认为这样更可读,特别是如果我在几个月后看到此代码)。

这不起作用。如果我有一个未映射到实体的简单字段,它将不起作用。例如:公共字符串SomeProp{get;set;}。给出了相同的错误。