![](/img/trans.png)
[英]Linq Any - Only primitive types or enumeration types are supported in this context
[英]LINQ query. Only primitive types or enumeration types are supported in this context
我想創建LINQ查詢檢查創建當前月份創建的自動權限。 我有權限列表包括對員工和公司,然后我想獲得這些夫婦在當月創建的權限列表。 不幸的是它返回異常:“附加信息:無法創建類型'Exence.CRM.Dto.AutomaticPermissionDto'的常量值。在此上下文中僅支持基本類型或枚舉類型”。 如何修復第二個查詢?
var automaticPermission = await context.AutomaticPermission
.AsNoTracking()
.Select(x => new AutomaticPermissionDto
{
EmployeeId = x.EmployeeId,
CompanyId = x.CompanyId
}).ToListAsync();
var currentlyAutomaticPermissions = await context.Permissions
.Where(x => automaticPermission.Select(c => c.EmployeeId).Contains(x.EmployeeId) &&
automaticPermission.Select(c => c.CompanyId).Contains(x.CompanyId) &&
x.IssueDate.Month == DateTime.Today.Month)
.AsNoTracking()
.ToListAsync();
您似乎正在尋找在AutomaticPermission
中具有匹配數據的Permissions
。 您可以在一個LINQ查詢中更有效地執行此操作,同時解決您的問題:
var currentlyAutomaticPermissions = await context.Permissions
.Where(x => context.AutomaticPermission
.Any(at => at.EmployeeId == x.EmployeeId
&& at.CompanyId == x.CompanyId)
&& x.IssueDate.Month == DateTime.Today.Month)
.AsNoTracking()
.ToListAsync();
這不僅效率更高,我還認為匹配更准確,因為它匹配了CompanyId
和EmployeeId
。 原始查詢將查找在AutomaticPermission
發生哪個CompanyId
和EmployeeId
Permissions
,但不一定是對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.