【发布时间】:2023-02-13 16:09:03
【问题描述】:
通过 Entity Framework 查询 SQL Server 时,我正在使用 System.Linq.Dynamic.Core v 1.2.24 创建动态选择语句。它位于 GraphQL API 后面,目的是使数据库查询尽可能高效——只查询数据库中请求的列。 我的投影适用于被枚举的类型,但该类型有一个子属性也需要投影。
我创建了一个简单的 Fiddle 来演示这一点。
https://dotnetfiddle.net/nvU7DB
在示例中,我正在查询一个 Person 集合,Person 有一个属性 Address。我成功地投影了 Person 属性,但不知道如何投影 Address 属性。我找不到这方面的任何例子。
这个动态 linq 字符串将带回地址的所有属性: “新人(身份证,名字,地址)" 但我想对 Address 进行投影,例如仅填充 Id 和 City。
我在想字符串可能看起来像这样 “新人(身份证,名字,新地址(ID,城市)“ 但这会导致“未处理的异常。未找到键入‘地址’(在索引 37 处)”
没有“新”: “新人(身份证,名字,地址(ID,城市))" 这会导致“未处理的异常。类型‘Person’(索引 38)中不存在属性或字段‘City’”。
为了阐明我正在尝试做的事情,这就是投影在 C# 代码中的样子:
var projectedPeople = people.Select(
e => new Person() {
Id = e.Id,
FirstName = e.FirstName,
Address = new Address(){
Id = e.Address.Id,
City = e.Address.City
}
});
任何帮助或见解将不胜感激。
【问题讨论】: