我有以下内容(我在 CodeFirst 中使用过):
public class MyForm
{
public int MyFormId { get; set; }
//Many Form Properties
public virtual ICollection<AuditItem> AuditItems { get; set; }
}
public class AuditItem
{
public int AuditItemId { get; set; }
public int MyFormId { get; set; }
public IAppUser User { get; set; }
public string ActionByUserStr { get; set; }
public string ActionByUserDisplayName { get; set; }
public DateTime DateOfAction { get; set; }
public string TypeOfAction { get; set; }
public int Step { get; set; }
public virtual MyForm MyForm { get; set; }
}
AuditItem 跟踪在 MyForm 上执行的许多操作
我正在展示一个索引页,其中显示了 AuditItem 的最后一步 = 1 的表。
我做了一个 orderby DateOfAction (因为 Step 可以设置为 0,所以我不希望它等于 1,除非它也是该 MyForm 的最后一个 AuditItem 记录),然后选择最后一个记录的步骤,然后查询。我想尽早查询,以免撤回不需要的 MyForms 记录。
这是我的查询:
var myFormsAtStep1 =
context.MyForms.Include("AuditItems").Where(
mf => mf.AuditItems.OrderBy(ai => ai.DateOfAction).Last().Step == 1);
它给出了这个错误:
LINQ to Entities does not recognize the method 'MyForms.Models.AuditItem Last[AuditItem](System.Collections.Generic.IEnumerable`1[MyForms.Models.AuditItem])' method, and this method cannot be translated into a store expression.