簡體   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