[英]Linq-to-sql query with translation from comma-separated of code to comma-separated of description
我有以下表格:
“程序”:
代碼:bigint,主鍵,自動遞增
標題:varchar(max),非空
“工作清單”:
代碼:bigint,主鍵,自動遞增
標題:varchar(max),非空
過程:varchar(max),非空,過程代碼的逗號分隔字符串
...
我正在使用Linq-to-SQL查詢帶有“過程”列的表“工作列表”,該表將轉換為以逗號分隔的過程標題字符串。
例如,“工作列表”。“過程”的子查詢:
procedures = string.Join(",", (
from pc in w.procedures.Split(',').Select(cs => long.Parse(cs)).ToList()
join ps in db.procedures.AsEnumerable() on pc equals ps.code
select ps.caption
).ToArray()),
但是,我面臨“ Split()在SQL中不支持翻譯”的異常。
請提出建議。 非常感謝!
您將無法像這樣解決查詢。 您需要將原始數據獲取到c#,然后處理拆分。
這是因為在您當前的代碼中,您正在要求sql server進行拆分,並且它沒有實現。 因此錯誤...
以下內容將procList中的每個項目作為單獨的sql參數傳入,以便可以將其放入sql IN子句中。 如果沒有太多,這應該可以正常工作。
var procList = w.procedures.Split(',').Select(cs => long.Parse(cs)).ToList();
var procedures = (from ps in db.procedures.AsEnumerable()
where procList.Contains(ps.Code)
select ps.Caption).ToArray()
在顯示的查詢中,您將必須首先使用linq查詢從db獲取記錄,例如:
var abc = w.procedures.ToList();
要么
var abc = w.procedures.ToList().Select(cs => cs).Split(...);
現在在abc上,您可以使用任何字符串函數。.因為一旦執行ToList,它將從數據庫中獲取記錄。
希望這可以幫助..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.