Linq to SQL包含名称搜索

时间:2015-05-06 15:20:44

标签: c# sql asp.net linq contains

我正在搜索其中包含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路线走下去?

1 个答案:

答案 0 :(得分:0)

LINQ是对的。 “ Joey Shabbado ”在您的搜索字符串中不是contained。要使contains返回true,则完整的字符序列必须与另一个字符串中的一个完整序列匹配。

根据您定义为“匹配”的内容,您可以转向正则表达式并尝试(1)拆分查询,然后使用正则表达式与\AJoey.+Shabbadoo\z匹配