如何解决如何重构在select语句中使用静态方法的MongoDB .NET LINQ查询
我最近将.NET MongoDB驱动程序从传统驱动程序升级到了较新的驱动程序。许多查询不再起作用,这让我感到困惑。
plugins: [
new HtmlWebpackPlugin({
template: __dirname + "/app/index.html",hash: true,filename: "index.html",inject: "body"
}),new MiniCssExtractPlugin({
filename: "styles.css"
}),new Jarvis({
port: jarvisPort
})
]
它似乎不支持产生以下错误的静态函数TitleHelper.GetPermissionGroup()。
var dataSource = permissions.Select(x => new PermissionSetPermissionGridViewModel
{
Id = x.Id,PermissionGroupInfo = new KeyValuePair<Guid?,string>(x.PermissionGroupId,TitleHelper.GetPermissionGroupTitle(x.PermissionGroupId)),IsEnabled = x.IsEnabled,ObjectType = ObjectTypeIds.GetEnumValue(x.ObjectTypeId.Value)
}).ToList()
如何重构该查询,以便新的驱动程序支持该查询?
解决方法
您的GetPermissionGroupTitle(...)
方法无法转换为有意义的Mongo表达式(没有等效方法)。
您可以做的是在内存中获取所有需要的数据,然后调用该静态方法。基本上,应该先调用.ToList()
,然后再调用另一个.Select(...)
,以在其中调用静态方法。另一种方法是使用AutoMapper-当在不同模型之间进行映射时,我们将调用这种辅助扩展方法。像这样的东西应该是配置:
CreateMap<Permission,PermissionSetPermissionGridViewModel>()
.ForMember(
dest => dest.PermissionGroupInfo,cfg => cfg.MapFrom(src => new KeyValuePair<Guid?,string>( TitleHelper.GetPermissionGroupTitle(src.PermissionGroupId,src.PermissionGroupId))))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。