重用 Where 条件
Reuse a Where condition
我有以下 entity framework 查询:
IQueryable<Address> addresses = _context.Addresses
.Where(x =>
!(_context.Users.Any(y => y.AddressId == x.Id)) &&
!(_context.Books.Any(y => y.AddressId == x.Id) &&
!(_context.Shops.Any(y => y.AddressId == x.Id));
我经常使用这个 Where 条件...
是否可以以某种方式定义条件并在不同的查询中重用它:
IQueryable<Address> addresses = _context.Addresses.Where(AddressCondition);
我正在考虑使用 Expression 和 Func ...
问题是条件使用了DbContext(_context)。
看起来地址 table 与用户、图书和商店 table 有 1:M 关系。假设地址实体有用户、书籍和商店集合,您可以使用 !address.Users.Any()
来查找没有匹配用户等的地址。
您可以将整个操作提取到接收原始 IQueryable、应用 Where
运算符和 returns 新 IQueryable 的函数中,例如:
IQueryable<Address> OrphanedOnly(IQueryable<Address> query)
{
return query.Where(address=>!address.Users.Any() &&
!address.Books.Any() &&
!address.Shops.Any());
}
我有以下 entity framework 查询:
IQueryable<Address> addresses = _context.Addresses
.Where(x =>
!(_context.Users.Any(y => y.AddressId == x.Id)) &&
!(_context.Books.Any(y => y.AddressId == x.Id) &&
!(_context.Shops.Any(y => y.AddressId == x.Id));
我经常使用这个 Where 条件...
是否可以以某种方式定义条件并在不同的查询中重用它:
IQueryable<Address> addresses = _context.Addresses.Where(AddressCondition);
我正在考虑使用 Expression 和 Func ...
问题是条件使用了DbContext(_context)。
看起来地址 table 与用户、图书和商店 table 有 1:M 关系。假设地址实体有用户、书籍和商店集合,您可以使用 !address.Users.Any()
来查找没有匹配用户等的地址。
您可以将整个操作提取到接收原始 IQueryable、应用 Where
运算符和 returns 新 IQueryable 的函数中,例如:
IQueryable<Address> OrphanedOnly(IQueryable<Address> query)
{
return query.Where(address=>!address.Users.Any() &&
!address.Books.Any() &&
!address.Shops.Any());
}