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