簡體   English   中英

Linq-to-sql查詢,其翻譯是從逗號分隔的代碼到描述的逗號分隔

[英]Linq-to-sql query with translation from comma-separated of code to comma-separated of description

我有以下表格:

  1. “程序”:

    代碼:bigint,主鍵,自動遞增

    標題:varchar(max),非空

  2. “工作清單”:

    代碼: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM