在使用EF联接到数据库表中使用类
本文关键字:数据库 EF | 更新日期: 2023-09-27 18:25:22
如果我有一个包含我需要的一些对象的摘要类(例如它的主键等)。当我编写与其他表的联接时,有没有办法使用该类对象的列表?所以我的LINQ
查询中的所有东西都是像this.Context.MyTable
一样的真实表,但其中一个是我的List<MyClass>
?或者有没有任何与LINQ相关的Nuget
项目使这成为可能?
EF LINQ查询实际上不是在C#中运行的代码,它们被转换为SQL并在数据库服务器上运行;所以您不能将它们与内存中的数组(或List<T>
)连接起来。你能做的就是像这样使用Contains
:
public IEnumerable<Table1> GetThingsFromDatabse(DataContext db, IList<MyObject> objects)
{
var ids = objects.Select(x => x.Id).ToList();
var results = Enumerable.ToList(
from x in db.Table1s
where ids.Contains(x.Id)
select x
);
return results;
}
这被翻译成SQL,看起来像这样:
SELECT *
FROM [Table1] x
WHERE x.Id IN (@Id1, @Id2, ...)