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

LINQ 在使用 Regex.Split() 时抛出错误

您必须替换

 select i).AsEnumerable().Select(x=> new FormDetailsModel()

 select i).ToList().Select(x=> new FormDetailsModel()

当您使用 .ToList((,查询数据库并在本地运行选择扩展。否则lambda表达式被编译成sql查询,显然SQL不知道Regex.Split((。在 Linq2Objects 中,您可以使用该方法,因为它在本地运行。请务必记住您正在使用的 LinqTo*。

相关文章: