繁体   English   中英

在 vb.net 或 C# 中的 LINQ 中使用 indexOf() 函数?

[英]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.

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