c#连接两个表,并在查询中连接的第二个表的字段上进行过滤



我有一个ObjectA模型,其中有ObjectB的模型列表作为字段,但不是ObjectA模型表上的列。

我试图在ObjectA的端点上添加一个过滤器,它可以从数据库中返回我ObjectA,它在ObjectB上匹配一个字段。要过滤的字段名是" id "

我有一个返回IQueryable函数,其中我将返回一个连接这两个表的查询,并返回ObjectB中与传递的字段id匹配的字段"id"的记录。

连接表的查询是:var query = _context.ObjectA.Include(b => b.ObjectB).AsQueryable();

的代码,我有工作,但我认为可能有更好的方法来做到这一点,没有这些乱七八糟的代码。

if (filterModel.id != null)
{
query = query.Where(i => i.ObjectB.AsQueryable().Where(o => o.id.ToString().Equals(filterModel.id)).First().id.ToString() == filterModel.id
);
}
return query;

成功了

query = query.Where(i => i.ObjectB.Any(o => o.id.ToString().Equals(filterModel.id)));

最新更新