我想获取候选者和未删除的作品exp。我在我的c#app mvc。
中使用了存储库模式在过滤记录及其相关子实体时遇到问题
我有候选人名单,其中收集了workexp类型的投掷错误,说不能从身体构建表达。
我尝试输出匿名对象,但错误仍然存在,但如果我使用VM或DTO返回数据,则查询可以正常工作。
就像EF不喜欢在当前环境中新建现有实体一样。
var candidate = dbcontext.candidate
.where(c=>c.candiate.ID == id).include(c=>c.WorkExperience)
.select(e=>new candidate
{
WorkExperience = e.WorkExperience.where(k=>k.isdeleted==false).tolist()
});
有没有解决方法呢?
答案 0 :(得分:1)
您无法在已转换为SQL的表达式中调用ToList
。或者,您可以从选择WorkExperience
表开始查询。我不知道你的数据库的结构,但这样的事情可能有用:
var candidate = dbcontext.WorkExperience
.Include(exp => exp.Candidate)
.Where(exp => exp.isdeleted == false && exp.Candidate.ID == id)
.GroupBy(exp => exp.Candidate)
.ToArray() //query actually gets executed and return grouped data from the DB
.Select(groped => new {
Candidate = grouped.Key,
Experience = grouped.ToArray()
});
答案 1 :(得分:0)
var candidate =
from(dbcontext.candidate.Include(c=>c.WorkExperience)
where(c=>c.candiate.ID == id)
select c).ToList().Select(cand => new candidate{WorkExperience = cand.WorkExperience.where(k=>k.isdeleted==false).tolist()});