c# – 搜索查询提供LINQ to SQL异常
发布时间:2020-12-15 21:21:10 所属栏目:百科 来源:网络整理
导读:对于以下查询,我得到一个LINQ to SQL异常. var terms = "bob town".Split(' ');var q = from m in db.Monument where terms.All(t = new Liststring() { m.Name,m.Street,m.Owner }.Any( p = p.Contains(t))) select m; 例外是: Local sequence cannot be u
对于以下查询,我得到一个LINQ to SQL异常.
var terms = "bob town".Split(' '); var q = from m in db.Monument where terms.All(t => new List<string>() { m.Name,m.Street,m.Owner }.Any( p => p.Contains(t))) select m; 例外是:
如何修改查询以与LINQ to SQL兼容? 目标 查询的目标是这样的.我有一个搜索术语列表和一个包含对象的数据库.如果所有搜索项都是至少一个属性的子字符串,则应返回一个对象. 例如.如果有o.name =“creek mill”和o.street =“St.Petersroad”的对象o,那么搜索“mill petersroad”应返回此对象,但搜索“mill foobar”不应该. 解决方法
因此,实际问题是Linq-To-SQL不知道如何将Linq的Terms部分转换为有效的SQL语句.因此,您必须重新调整查询以帮助它.
我假设我们想使用Contains函数来获取使用SQL IN运算符的SQL语句.这是我的建议. var terms = "bob town".Split(' '); var q = from m in db.Monument where terms.Contains(m.Name) || terms.Contains(m.Street) || terms.Contains(m.Owner) select m; 我没有测试过这个,但它看起来应该可以工作,应该由Linq-To-SQL转换. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |