私は以下を持っています(私は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を実行し(ステップが0に戻る可能性があるため、そのMyFormの最後のAuditItemレコードでもない限り、1に等しくしたくないため)、最後のレコードのステップを選択して、クエリを実行します。不要な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.