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