[英]Using String.Split().Contains() on CSV column using Linq/Lambda
我有一個數據庫表列,其中包含用逗號分隔的字符串列表。 我需要在此表中查詢以逗號分隔的列中的字符串。
桌子:
public class MyObject
{
public string sIds { get; set; }
...
}
如果我表中的sIds列包含:
sIds = "DG,VO,XX,AB"
然后執行以下代碼:
string _sId = "AB";
List<MyObject> designParams = _context.DesignParams
.AsNoTracking()
.Where(c => c.sIds.Split(',').Contains(_sId))
.Select(c => c)
.ToList();
我收到NotSupportedException: LINQ to Entities does not recognize the method 'System.String[] Split(Char[])' method, and this method cannot be translated into a store expression.
。
有很多與我的問題相似的文章,但我一直無法找到確切的解決方案。 我的代碼是否有問題,或者應該以其他方式完成?
EF不支持String.Split。 這是因為SQL中沒有等效項。 您可以嘗試在數據庫中定義自己的函數,如此處所述: http : //sqlperformance.com/2012/07/t-sql-queries/split-strings 。 或者,您可以嘗試將部分邏輯從服務器移至客戶端。
SQL中的等效項是“ IN”,LINQ中的Contains有點像反向:-
List<MyObject> designParams = _context.DesignParams
.AsNoTracking()
.Where(c => _sId.Contains(c.sIds))
.Select(c => c)
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.