LINQ 在使用 Regex.Split() 时抛出错误
本文关键字:出错 错误 Split Regex LINQ | 更新日期: 2023-09-27 18:06:40
ERROR
LINQ to Entities does not recognize the method 'System.String[] Split(System.String, System.String)' method, and this method cannot be translated into a store expression.
对于代码
var getfrmbid = (from e in _dbEntity.FormNames
where e.form_id == id & e.type == "Form"
select new FormsCreationModel
{
form_name = e.form_name,
form_id = e.form_id,
formfields = (from i in _dbEntity.FormDetails
where e.form_id == i.form_id
select i).AsEnumerable().Select(x=> new FormDetailsModel()
{
field_default = x.field_default,
field_id = x.field_id,
field_mandatory = x.field_mandatory,
field_maxlength = x.field_maxlength,
field_name = x.field_name,
field_type = x.field_type,
field_validation = x.field_validation,
field_value = Regex.Split(x.field_value, " ^ ").Select(item => new DropDownValue() { DDValue = item }).ToList()
}).ToList()
}).Single();
注意
field_value
处的错误点属于FormDetailsModel
中的 List<DropDownValue>
类型
x.field_value
是一个String
,我正在使用Regex.Split()
将其转换为String[]
,然后List<DropDownValue>
将其分配给field_value
。
拆分后如何从x.field_value
分配field_value
?
您必须替换
select i).AsEnumerable().Select(x=> new FormDetailsModel()
跟
select i).ToList().Select(x=> new FormDetailsModel()
当您使用 .ToList((,查询数据库并在本地运行选择扩展。否则lambda表达式被编译成sql查询,显然SQL不知道Regex.Split((。在 Linq2Objects 中,您可以使用该方法,因为它在本地运行。请务必记住您正在使用的 LinqTo*。