EF Core 7如何实现服务器端求值并投影到命名元组?
在EF Core 7中实现服务器端投影到命名元组
可行。你遇到的报错是因为EF Core的表达式树不支持直接使用元组字面量(x.Id, x.Name),但EF Core 7已经支持将查询投影到命名值元组,只需改用值元组构造函数语法,让EF Core能够将表达式翻译为SQL实现服务器端求值。
解决方案代码
var products = await _context.Products .Select(x => new (int Id, string Name)(x.Id, x.Name)) .ToListAsync();
说明
这种写法会让EF Core在服务器端执行投影(只查询Id和Name字段),最终返回的products就是List<(int Id, string Name)>类型的命名元组集合,完全符合你的需求——既保留了命名元组的类型优势,又能实现服务器端求值,不会像匿名对象那样无法跨方法传递,也比Tuple.Create()更简洁直观。
内容的提问来源于stack exchange,提问作者lonix
相关产品推荐
相关产品推荐

