我正在搜索其中包含fullname列的SQL 2005数据库。我希望能够检查该列并根据其相关性对结果进行排序。
我使用了我在SO上找到的一个不错的订购系统,但不幸的是,我不喜欢这样,而且似乎是因为'包含'功能不匹配。
以下是代码:
private static int QueryOrder(string query, string name)
{
if (name == query)
return -1;
if (name.Contains(query))
return 0;
return 1;
}
现在的问题是,在以下情况下,这不起作用:
数据库全名列数据: Joey JoeJoe Junior Shabbadoo
搜索查询: Joey Shabbadoo
查询订单方法不匹配'包含'因为它没有看到fullname字段包含查询文本。
我订购结果的方式就像这样
peopleList = peopleList.OrderBy(p => QueryOrder(fullName, p.FullName)).ToList();
那么,是否有一种方法可以使用LINQ来实现这一目标,还是应该沿着sproc路线走下去?
答案 0 :(得分:0)
LINQ是对的。 “ Joey Shabbado ”在您的搜索字符串中不是contained
。要使contains返回true,则完整的字符序列必须与另一个字符串中的一个完整序列匹配。
根据您定义为“匹配”的内容,您可以转向正则表达式并尝试(1)拆分查询,然后使用正则表达式与\AJoey.+Shabbadoo\z
匹配