[英]Use indexOf() function in LINQ in vb.net or C#?
我在数据库中有一个表,它有一个列名。 在 Grid 中显示之前读取 table 时,我必须更改所有 Items 名称。 我必须使用这个 LINQ 条款
Dim hospitalList = From l In db_Obj.VWrmz_HospitalCorrection
Select hospitalName = l.HOSPITAL_NAME.Substring(0,l.HOSPITAL_NAME.IndexOf("--"))
当我使用上面的代码时,我收到此错误消息:
LINQ to Entities 无法识别方法 'Int32 IndexOf(System.String, System.StringComparison)' 方法,并且此方法无法转换为存储表达式。
但是当我删除IndexOf()
它的工作正常:
Dim hospitalList = From l In db_Obj.VWrmz_HospitalCorrection
Select hospitalName = l.HOSPITAL_NAME.Substring(10)
我该怎么做才能从我的细胞中去除这样的东西?
也许使用匿名?
Dim hospitalList = From l In db_Obj.VWrmz_HospitalCorrection
Select New With {.hospitalName = l.HOSPITAL_NAME.Substring(0,l.HOSPITAL_NAME.IndexOf("--"))}
在您的错误消息中,无法识别的方法是“Int32.IndexOf”,“IndexOf”方法的调用者是“Int32”而不是“String”,您的 HOSPITAL_NAME 是否可能是数字?
如果找不到问题,可以尝试使用正则表达式代替“Substring”方法,如下所示(我使用的是 C#,所以...这是 C# 代码,抱歉):
Regex regex = new Regex("--.*");
var hospitalList = From l In db_Obj.VWrmz_HospitalCorrection
Select hospitalName = regex.Replace(l.HOSPITAL_NAME, "");
希望这可以帮助
这是它的 C# 版本。
LINQ to EF 无法将IndexOf
方法转换为 sql 语法。 您可以获取数据并稍后对其执行操作。
from ll in (from l in db_Obj.VWrmz_HospitalCorrection
select hospitalName = l.HOSPITAL_NAME).ToList()
select ll.Substring(0, ll.IndexOf("--"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.