此查询适用于 EF Core 5:
var query = from test1 in context.Test1
join test2 in context.Test2 on test1.Id equals test2.Test1Id
select new
{
test1,
test2
};
var result = query.ToList();
但是,当我只添加一个into
关键字时:
var query = from test1 in context.Test1
join test2 in context.Test2 on test1.Id equals test2.Test1Id into xxx
select new
{
test1,
test2 = xxx
};
var result = query.ToList();
它抛出:
未处理的异常。System.InvalidOperationException: The LINQ expression 'DbSet() .GroupJoin(inner: DbSet(), outerKeySelector: test1 => (Nullable)test1.Id,innerKeySelector: test2 => test2.Test1Id, resultSelector: (test1, xxx) => new { test1 = test1, test2 = xxx })' 无法翻译。以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用,显式切换到客户端评估。有关详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=2101038。
(真正的查询当然更复杂,into
子句更有意义。)
有什么解决方法吗?
GroupJoin
EF Core 中的支持仍然非常有限,但您可以省略此类限制:
var query = from test1 in context.Test1
select new
{
test1,
test2 = context.Test2.Where(test2 => test1.Id == test2.Id).ToList()
};
var result = query.ToList();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句