我遇到了EF6和LINQ to Entities方法的问题,因为我无法从一个类Claim
转换为派生类ClaimDetail
。我确信这个演员阵容是有效的,但我不知道如何使用语法来使演员工作。
模型的相关部分如下所示:
// Claim.cs
public class Claim
{
public int Id { get; set; }
// ..other properties
}
和
// ClaimDetail.cs
public class ClaimDetail : Claim
{
public string ClaimRef { get; set; }
// ..other properties
}
我有另一个类Request
,看起来像这样:
// Request.cs
public class Request
{
public Claim Claim { get; set; }
// ..other properties
}
这些类构成了上下文的一部分,如下所示:
// Context.cs
public DbSet<ClaimDetail> Claims { get; set; }
public DbSet<Request> Requests { get; set; }
现在,我想基于Request
的属性对ClaimDetail
s的LINQ查询进行排序。我有这个:
sorted = intermediate.OrderBy(r => ((ClaimDetail)r.Claim).ClaimRef);
其中intermediate
是IQueryable<Request>
。但是,在尝试实现此查询时,我收到以下消息:
Unable to cast the type 'Claim' to type 'ClaimDetail'. LINQ to Entities only supports casting EDM primitive or enumeration types.
我怎样才能这样做,而无需在中间结果上调用ToList()
?那太贵了。