c# – 类型’System.String []’不支持比较运算符

为什么这一行:

var category = _dataContext.Categories.Where<Category>(p => p.Keywords.Split(' ').Contains<string>(context.Request.QueryString["q"])).First();

抛出System.NotSupportedException:

Comparison operators not supported for type ‘System.String[]’

我该如何解决?
谢谢.

那么您是在数据库中以空格分隔的列中查找值(来自查询字符串)?您是否使用Split来查询数据库中的各个值?

(只是检查我的假设…)

string.Split不支持这种方式(在列数据的数据库中) – 请参阅此处的supported string operations.(请注意,明确不支持string.Split).

我很懒;当我在数据库中划分数据时(相对罕见),我总是在数据的开头和结尾添加相同的分隔符;然后我可以搜索:

string searchFor = DELIMITER + searchValue + DELIMITER;
...
.Where(row => row.Value.Contains(searchFor));

然而;在这种情况下,我希望最实用的选项可能是编写一个UDF函数来搜索分隔的varchar(正确处理第一个/最后一个项目),并在数据上下文中公开UDF – 然后使用:

.Where(row => ctx.ContainsValue(row.Value, searchValue)); // ContainsValue is our UDF

或者 – 规范化数据……

.Where(row => row.Values.Any(s=>s.Value == searchValue));
https://stackoverflow.com/questions/1211942/comparison-operators-not-supported-for-type-system-string

转载注明原文:c# – 类型’System.String []’不支持比较运算符