C# Linq问题:类型';System.String[]和#x27;这不是一个序列
我想我会对我的数据进行全方位搜索 所以我做了一个函数,返回字符串上的任何匹配项 前 但是,当我尝试迭代它时,我得到的C# Linq问题:类型';System.String[]和#x27;这不是一个序列,c#,linq,subsonic3,C#,Linq,Subsonic3,我想我会对我的数据进行全方位搜索 所以我做了一个函数,返回字符串上的任何匹配项 前 但是,当我尝试迭代它时,我得到的类型为'System.String[]的表达式不是序列。 //blows up on first iteration foreach(var v in results) {...} 有人能给我一些建议吗 谢谢 我在Linqpad中运行了该查询,它运行了,但不是您想要的方式。它没有对%内的每个字段执行类似操作,而是对集合执行IN操作,只有在数据完全匹配的情况下才会匹配。你能把它写下
类型为'System.String[]的表达式不是序列。
//blows up on first iteration
foreach(var v in results)
{...}
有人能给我一些建议吗
谢谢 我在Linqpad中运行了该查询,它运行了,但不是您想要的方式。它没有对%内的每个字段执行类似操作,而是对集合执行IN操作,只有在数据完全匹配的情况下才会匹配。你能把它写下来吗
var results = (from d in db.MyData
where d.DataField1.Contains(searchTerm) || d.DataField2.Contains(searchTerm)
select d);
我认为问题在于
.Contains
,因为linq查询在任何情况下都不会给您一个字符串[]。@recursive,他显式地创建一个字符串[]
,然后调用Contains
。我认为这不是问题所在。而且string[]
实现了IEnumerable
,它提供了对可枚举.Contains的访问。您可以设置context.Log=Console.Out;然后看看底层查询?
var results = (from d in db.MyData
where d.DataField1.Contains(searchTerm) || d.DataField2.Contains(searchTerm)
select d);