c# - 选择抛出值中的 C# linq Expression Func 不能为空参数名称:源错误
问题描述
我正在编写简单的 linq 查询,如下所示。第一个选择映射器工作正常。但是第二个映射器类不工作并抛出'Value cannot be null; Parameter name: source'
这真的让我发疯。不知道如何调试,因为按“F11”不会进入该方法。在下面的“用户”类中是数据对象。
返回结果的main方法:
return await query
.Select(UserSearchMappingSelector.ToDto(hasSensitiveAccess))
.Select(UserSearchMappingSelector.ToViewModelFromDto(hasSensitiveAccess))
.OrderBy(user => user.Name)
.ToListAsync();
public static Expression<Func<User, SearchPersonDto>> ToDto(bool hasSensitiveAccess)
{
return (User entity)
=> new SearchPersonDto
{
Id = entity.Id,
UserGuid = entity.UserGuid,
KnownAs = entity.KnownAs,
Forename = entity.Forename,
Surname = entity.Surname,
Manager = GetManager(entity),
Subordinates = GetSubordinates(entity, hasSensitiveAccess)
};
}
public static Expression<Func<SearchPersonDto, SearchPerson>> ToViewModelFromDto(bool hasSensitiveAccess)
{
return (SearchPersonDto entity)
=> new SearchPerson
{
Id = entity.Id,
UserGuid = entity.UserGuid,
Name = User.GetDisplayName(entity.KnownAs, entity.Forename, entity.Surname),
Manager = new Manager() { Id = entity.Manager.Id },
Subordinates = new List<Subordinate>()
};
}
public partial class User
{
// Logic is in sync with [org].[Select_AuditUsers]
// if KnownAs is empty string DisplayName should be " surname"
[NotMapped]
public string DisplayName => GetDisplayName(KnownAs, Forename, Surname);
public static string GetDisplayName(string knownAs , string forename, string surname)
{
return $"{knownAs ?? forename} {surname}";
}
}
不确定为什么第二个映射器无法从 SearchPersonDto 类中读取 manager 属性。
谁能帮我上面的查询有什么问题?
此外,如果我在第二个映射器中评论 Manager 和 Subordinates 属性,一切正常。
谢谢
解决方案
推荐阅读
- html - 当我尝试在 Angular 7 的屏幕上执行任何操作时,HTML 表单被挂起/冻结
- react-native - 如何在 React Native 的 View 组件中应用两种不同的样式
- php - 目录更改时插件更新错误wordpress
- python - 通过范围索引获取整个数组
- python - 在 python 中可视化嵌套函数调用
- java - android studio switch 如何以编程方式设置开关的状态
- rust - 如何使一个项目在我的二进制 crate 目标中可见,但在任何其他 crate 中不可见?
- javascript - Javascript 获取原型函数名称
- r - 在 R 中合并数据集
- json - JSON 数据的 PostgreSQL 平均值