表达式-无法创建类型为'System.Collections.Generic.List ' 1'的常量值
本文关键字:List Generic 常量 Collections System 类型 创建 表达式 | 更新日期: 2023-09-27 18:01:27
我写了以下lambda表达式
Expression<Func<ContractObject, bool>> objExpression =
i => i.ContractProjects.Any(a => ProjectList.Any(p => p.Id == a.ProjectId));
ContractProjects
和ProjectList
是具有相同值的两种不同类型的列表。投影和Id。
但是它抛出了以下异常。我需要做什么改变吗或者这个表达式可以用另一种方式写吗?
无法创建类型为'System.Collections.Generic.List ' 1'的常数值。在此上下文中只支持基本类型('如Int32, String和Guid')。
我想问题是你的ContractList可能还没有创建
试题:
var objExpression = i => i.ContractProjects.ToList()
.Any(a => ProjectList.Any(p => p.Id == a.ProjectId));
经过多次尝试和错误,我得到了以下解决方案
List<Int32> projectIds = new List<Int32>();
foreach (Project p in ProjectList)
projectIds.Add(p.Id);
Expression<Func<ContractObject, bool>> objExpression =
i => i.ContractProjects.Any(a => projectIds.Contains(a.ProjectId)));
谢谢你的帮助