ToDictionary从第二个表查询返回Null
本文关键字:返回 Null 查询 第二个 ToDictionary | 更新日期: 2023-09-27 17:53:03
我有两个模型如下:
public class Complaint
{
[Key]
public int COMP_ID { get; set; }
public Nullable<DateTime> Received_DT { get; set; }
public virtual ICollection<CHECKLIST> CHECKLISTs { get; set; }
}
public class CHECKLIST
{
[Key]
public int CL_ID { get; set; }
public int EmpID { get; set; }
public virtual COMPLAINT Complaints { get; set; }
}
我有一个存储库,它查询并返回EMPID输入的所有检查表的计数,但当我从的父表中添加另一个过滤器时,它返回null。当我从父表中取出.Where子句时,它工作得很好。
编辑尝试包括表
public Dictionary<int, int> GetAllChecklistCount()
{
try
{
return _context.Checklists
.Where(t => t.Complaints.Received_DT.Value.Year == 2016)
.Include(t => t.Complaints)
.GroupBy(a => a.EmpID)
.ToDictionary(g => g.Key, g => g.Count());
}
catch (Exception ex)
{
_logger.LogError("Could not get am with checklist", ex);
return null;
}
}
抛出错误
引发异常:mscorlib.dll中的"System.ArgumentException"System.ArgumentAxception:类型为System.Func
2[Microsoft.Data.Entity.Query.EntityQueryModelVisitor+TransparentIdentifier
2[CRSMV3_2.Models.CHECKLIST,Microsoft.Data.Entity.Storage.ValueBuffer],System.Int32]的表达式不能用于类型为System.Func2[CRAMSV3_2.Models.CHECKLIST,System.Int32]' of method 'System.Collections.Generic.IEnumerable
1[System.Linq.IGrouping2[System.Int32,CRAMSV3_2.Models.CHECKLIST]] _GroupBy[CHECKLIST,Int32,CHECKLIST](System.Collections.Generic.IEnumerable
1[CRSMV3.2.Models.CHECKLIST]的参数,System.Func2[CRAMSV3_2.Models.CHECKLIST,System.Int32], System.Func
2[CRAMSV3_2.Models.CHECKLIST,CRAMSV3_2.Models.CHECKLIST]('
问题返回多个表或仅一个表的结果的最佳方式是什么,但要确保另一个表中的日期是可查询的。
您需要包含Complaints对象。
return _context.Checklists
.Where(t => t.Complaints.Received_DT.Value.Year == 2016)
.Include(t => t.Complaints)
.GroupBy(a => a.EmpID)
.ToDictionary(g => g.Key, g => g.Count());
有关