使用 ID 列表搜索 Entity Framework table
Searching Entity Framework table with a list of Id's
我有一个 return 是 entity framework table 的函数,但我只需要通过另一个实体列表传入的某些 ID。我不确定执行此操作的正确方法,我尝试了以下方法,但列表导致了问题...
public IEnumerable<Payment> PaymentsForContact(List<User> user) =>
_context.Payments.Where(p=> p.Id == user.Id;
有没有一种方法可以遍历用户对象以仅 return _context.Payments 中的用户 ID?
提前致谢
要遍历某些东西,即在两个表中,您可以使用连接
Payments.Join(Users, p=>p.UserID, u =>u.UserID, (p,u)=>p)
returns 个付款,有一个用户。
如果您已有 ID 列表,则可以使用 Contains
var list = new List<int> { 1,2,3,4};
Payments.Where( p => list.Contains(p.UserId));
但这只推荐用于小型 ID 列表(少于 100),因为所有 ID 都会成为您查询字符串的一部分。
我认为这段代码可以满足您的需求:
_context.Payments.Where(p=> user.Any(u=> u.Id == p.Id));
对于每笔付款,您必须检查用户列表是否包含该付款
我有一个 return 是 entity framework table 的函数,但我只需要通过另一个实体列表传入的某些 ID。我不确定执行此操作的正确方法,我尝试了以下方法,但列表导致了问题...
public IEnumerable<Payment> PaymentsForContact(List<User> user) =>
_context.Payments.Where(p=> p.Id == user.Id;
有没有一种方法可以遍历用户对象以仅 return _context.Payments 中的用户 ID?
提前致谢
要遍历某些东西,即在两个表中,您可以使用连接
Payments.Join(Users, p=>p.UserID, u =>u.UserID, (p,u)=>p)
returns 个付款,有一个用户。
如果您已有 ID 列表,则可以使用 Contains
var list = new List<int> { 1,2,3,4};
Payments.Where( p => list.Contains(p.UserId));
但这只推荐用于小型 ID 列表(少于 100),因为所有 ID 都会成为您查询字符串的一部分。
我认为这段代码可以满足您的需求:
_context.Payments.Where(p=> user.Any(u=> u.Id == p.Id));
对于每笔付款,您必须检查用户列表是否包含该付款