我有以下linq查询:
MyClass myobj = (from p in Session.All<MyClass>()
where p.tags.Split(' ').Contains(searchTag)
select p).FirstOrDefault();
当我跑步时,我得到:
System.NotSupportedException:LINQ to Entities无法识别 方法'System.String []拆分(Char [])'方法,而这个方法不行 被翻译成商店表达。
做我想做的事情的好方法是什么?
答案 0 :(得分:2)
这里真正的问题是数据库设计,但假设你无法控制这个想法就是拆分查询。
首先检索包含搜索标记的任何行。
List<MyClass> myobjs = (from p in Session.All<MyClass>()
where p.tags.Contains(searchTag)
select p).ToList();
然后对内存中检索到的对象执行正确的标记搜索。
MyClass myobj = myobjs.FirstOrDefault(m => m.tags.Split(' ').Contains(searchTag));
答案 1 :(得分:0)
因此,假设代码= tag1 tag2 tag3
,而searchTag为tag2
,您可以这样做:
MyClass myobj = (from p in Session.All<MyClass>()
where p.tags.IndexOf(searchTag) > -1
and searchTag.IndexOf(" ") == -1
select p).FirstOrDefault();