2015-05-06 106 views
0

我在SQL 2005數據庫上搜索具有全名列的數據庫。我希望能夠檢查該欄並根據其相關性對結果進行排序。Linq to SQL包含名稱搜索

我正在使用一個很好的訂購系統,我發現,但不幸的是不工作,因爲我想,這似乎是因爲'包含'功能不匹配。

下面的代碼:

private static int QueryOrder(string query, string name) 
{ 
    if (name == query) 
     return -1; 
    if (name.Contains(query)) 
     return 0; 

    return 1; 
} 

現在的問題是,這並不在下列情況下工作:

數據庫全稱列數據:喬伊JoeJoe少年Shabbadoo

搜索查詢:Joey Shabbadoo

queryorder方法在'contains'上不匹配,因爲它沒有將fullname字段看作包含查詢文本。

的方式,然後我命令的結果是這樣的

peopleList = peopleList.OrderBy(p => QueryOrder(fullName, p.FullName)).ToList(); 

那麼,有沒有使用LINQ要做到這一點,或者我應該只是下去存儲過程的路線呢?

+0

你可能分裂空間上的搜索查詢,並做了檢查對\AJoey.+Shabbadoo\z匹配兩部分? – Thewads

+0

我已經更新了一些更詳細的問題。我曾考慮拆分,但我不確定我會如何訂購結果。 –

回答

0

LINQ是對的。 「Joey Shabbado」不是contained在您的搜索字符串中。要讓contains返回true,則完整的字符序列必須與另一個字符串中的一個完整序列相匹配。

取決於你定義爲「匹配」你可以把正則表達式,並嘗試(1)分裂您的查詢,然後使用正則表達式

+0

我不是說LINQ是錯誤的,只是包含功能在我的場景中不起作用。 –

+0

我以前使用過正則表達式,但不是像這樣的東西。我會研究它是多麼合適。 –