繁体   English   中英

表达式-无法创建类型为'System.Collections.Generic.List`1'的常量值。 仅原始类型(例如Int32,String和Gu

[英]Expression - Unable to create a constant value of type 'System.Collections.Generic.List`1'. Only primitive types ('such as Int32, String, and Gu

我写了以下lambda表达式

Expression<Func<ContractObject, bool>> objExpression = 
i => i.ContractProjects.Any(a => ProjectList.Any(p => p.Id == a.ProjectId));

ContractProjectsProjectList是共享公共值的两种不同类型的列表,即。 ProjectId和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)));

感谢您的帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM