c# - System.NotSupportedException:- 无法创建“System.Char”类型的常量值。仅支持原始类型或枚举类型
问题描述
我的 asp.net mvc-5 和实体框架 5 中有以下代码:-
public bool customerEligableforDeleteAllDelete(long customerid, long cid)
{
var superadminusers = ourdbset.SecurityRoles
.SingleOrDefault(a => a.Name.ToLower() == "super administrator")
.SecurityRoleUsers
.Select(a=>a.UserName.ToLower().Trim())
.ToList();
var superadminusersbygroups = ourdbset.SecurityRoles
.SingleOrDefault(a => a.Name.ToLower() == "super administrator")
.Groups
.Select(a=>a.ourdbsetUserGroups
.SelectMany(a1 => a1.UserName.ToLower().Trim()))
.ToList();
var allsuperadminusers = superadminusers.Union(superadminusersbygroups).ToArray();
var accountCI = entities.AccountCIs
.SingleOrDefault(a => a.CIID == cid);
return ((ourdbset.DeleteAllRequests
.Where(a => a.CustomerID == customerid
&& !a.Approved
&& allsuperadminusers.Contains(a.RequestedBy.ToLower().Trim())
&& accountCI.ATTRIBUTE_1501.ToLower() == "inactive"))
.ToList().Count() == allsuperadminusers.Count());
}
但是在返回语句中,我收到了这个错误:-
System.NotSupportedException was unhandled by user code
HResult=-2146233067
Message=Unable to create a constant value of type 'System.Char'. Only primitive types or enumeration types are supported in this context.
Source=System.Data.Entity
StackTrace:
那么有人可以就此提出建议吗?谢谢
解决方案
accountCI.ATTRIBUTE_1501.ToLower() == "inactive")
首先观察,这不应该出现在您对 db 的查询中。在查询具体化后执行此过滤器。
其次,在比较字符串时使用.Equals()
而不是。==
第三,我对查询中的使用有疑问.Trim()
,我不是 100% 确定的。
此外,直接返回查询结果也不是一个好习惯。尝试将查询具体化在一个变量中,然后返回该变量(更易于调试,更清晰)。例如 :
var queryResults = ourdbset.DeleteAllRequests
.Where(a => a.CustomerID == customerid
&& !a.Approved
&& allsuperadminusers.Contains(a.RequestedBy.ToLower().Trim())
.ToList();
var count = queryResults.Where(accountCI.ATTRIBUTE_1501.ToLower().Equals("inactive").Count();
var areEqual = count == allsuperadminusers.Count();
return areEqual;
如果这不能解决您的问题,我建议您在这里查看:allsuperadminusers.Contains(a.RequestedBy.ToLower().Trim())
。确保allsuperadminusers
是字符串列表。
否则,请提供更多详细信息以提供更多帮助。
推荐阅读
- c# - 来自 Handler 和 sameSite=strict cookie 的 .NET MVC 重定向
- apache-nifi - 如何按 NiFi 中排队数据的时间戳进行过滤?
- unity3d - Unity 2019.3.3f1 在 Mac OSX Catalina 和 Mojave 下崩溃
- java - 使用 Android Studio 如何修改 onTextChange 函数以允许您根据项目的类元素过滤掉结果
- podio - Podio API JS - 更新项目的关系字段
- python - 定期检查 gpu 内存并在空闲时运行脚本
- r - 在ggplot2中对图例的项目进行排序并手动为它们着色
- api - 将非 ssl 请求重定向到 ssl 版本的站点是否安全?
- python - Sublime 3 - 如何像在 Matlab 的“工作区”中一样查看 Sublime 中存储的变量
- c++ - How to fix an "no instance of constructor matches argument list" error in C++?