如何使用Split操作执行LINQ查询

时间:2013-12-02 21:57:32

标签: c# linq

我有以下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 [])'方法,而这个方法不行   被翻译成商店表达。

做我想做的事情的好方法是什么?

2 个答案:

答案 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();