Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq问题:类型';System.String[]和#x27;这不是一个序列_C#_Linq_Subsonic3 - Fatal编程技术网

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);