【发布时间】:2018-05-06 13:29:25
【问题描述】:
我正在使用新的 .net 核心和 EF。
我需要有关 include linq 命令的帮助。我有一些 1:N 模型,如果集合包含一些标记为已删除的数据,我不想包含它们。
怎么做?
var company = await _context.Company
.Include(y => y.Administrators)
.Include(y => y.CompanyPartTimers)
.Include(z => z.WorkPlaces)
.Include(z => z.Requirements)
.FirstAsync(x => x.Id == id);
如果我添加条件
.Include(z => z.WorkPlaces).Where(x=>x.WorkPlaces.Where(x=>!x.IsDeleted))
它不起作用。这个怎么写?
接下来我有 IDeletable 接口,如果我有一些自定义 linq 表达式并且可以为 ex 做的话会更好。
.Include(z => z.WorkPlaces).GetNonDeleted()
有人知道怎么做吗? 我尝试过这样的事情
public static class LinqExtension
{
public static IEnumerable<T> GetActive<T>(this IEnumerable<T> source) where T : class, IDeletable
{
return source.Where(x => x.IsDeleted);
}
}
谢谢大家。
【问题讨论】:
-
将 x=>x.WorkPlaces.Where(x=>!x.IsDeleted) 更改为 x=>x.WorkPlaces.Any(x=>!x.IsDeleted)
-
"It doesn't work"你有错误吗?结果与预期不同? -
编译错误
-
@JardaLanger,你解决了这个问题吗?
-
是的,我在下面的链接中使用了查询过滤器docs.microsoft.com/en-us/ef/core/querying/filters
标签: c# linq asp.net-core entity-framework-core