首页 > 解决方案 > 在包含中过滤属性列表

问题描述

我需要你的帮助

我尝试使用 .Include 创建一个 linq 句子,但我的问题是我在 mi 类中有一个属性,女巫是一个列表,它是我的类:

public partial class document
{
    public int       ID     { get; set; }
    public string    Amount { get; set; }
    public List<Log> Log    { get; set; }
}

这是课堂日志

public partial class Log
{
    [Key]
    public int ID { get; set; }

    [Required]
    public Status Status { get; set; }

    [Column(TypeName = "text")]
    public string Description { get; set; }

    public DateTime? DateLog { get; set; }

    public int? DocumentID{ get; set; }

    [ForeignKey("DocumentID")]
    public Document Document{ get; set; }
}

我的问题是我不知道如何过滤文档中的列表记录以包含在类中,我需要获取整个文档类并过滤仅显示状态=已接收的日志,一个文档可以有很多日志

你试图这样做,但它没有用

 var Result = db.document
    .Include(m => m.Log.Where(c => c.Status == Status.Recieved));

我收到了下一个错误

"包含路径表达式必须引用在类型上定义的导航属性。使用虚线路径作为引用导航属性,使用选择运算符作为集合导航属性。\r\n参数名称: 路径"

我感谢您的帮助

标签: c#asp.net-mvcentity-frameworklinqmodel-view-controller

解决方案


Include用于包含与实体的关系并获取相关实体属性,检查文档 -获取相关数据
如果您选择的文档没有Include这样

var documents = await db.document.ToListAsync();

Log将获得为空的文档数据。

你需要这样的东西:

var result = await db.document
                     .Select(w=> new 
                     {
                         document = w,
                         log = w.Log.Where(c => c.Status == Status.Recieved).ToList()
                     }).ToListAsync();

推荐阅读