繁体   English   中英

从匹配对象列表中从 DbSet 中获取实体

[英]Obtaining entities from DbSet from a list of matching objects

我正在使用Entity Framework Core 6 ,我想在DbSet中找到一系列实体。 我要获取的实体是与输入对象列表中的某些属性匹配的实体。

我试过这样的事情:

public IEnumerable<MyEntity> FindEntities(IEnumerable<MyEntityDtos> entries)
{
    return dbContext.MyDbSet.Where(r => entries.Any(e => e.Prop1 == r.Prop1 && e.Prop2 == r.Prop2));            
}

但我得到经典的 EF Core 异常,说我的 LINQ 无法转换为数据库查询(问题尤其是entries.Any(...)指令)

我知道我可以遍历entries列表并从 DbSet 中一一获取实体,但这非常慢,我想知道在我不知道的 EF Core 中是否有更有效的方法来执行此操作关于。

我认为这应该有效:

public IEnumerable<MyEntity> FindEntities(IEnumerable<MyEntityDtos> entries)
{
    var props1=entries.Select(x=>x.Prop1).ToArray();
    var props2=entries.Select(x=>x.Prop2).ToArray();

    return dbContext.MyDbSet.Where(r => props1.Contains(r.Prop1) && props2.Contains(r.Prop2));            
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM