2012-05-22 29 views
2

我只是一直在玩linq sql和lambda表達式第一次幾天,我想要做以下事情。LINQ,Lambda,C#,擴展方法

我有一個字符串擴展方法返回一個double。擴展方法測試兩個字符串並返回相似性分數。 我有一個列表中的字符串值從一個表中使用LINQ到SQL,我想要使用擴展方法作爲一種方式來篩選出唯一的那些字符串的相似度得分等於或大於輸入字符串。

我已經得到了以下。我似乎無法測試返回的double的值。

List<int> ids = dc.ErrorIndexTolerances 
        .Where(n => n.Token.Distance(s) => .85) 
        .Select(n => n.ID) 
        .ToList(); 

Distance Method是返回double的擴展方法。令牌和s都是字符串。 ID是表格中的整數ID字段。

有沒有人有任何提示?

回答

9

大於或等於運營商是>=而不是=>

List<int> ids = 
    dc.ErrorIndexTolerances.Where(n => n.Token.Distance(s) >= .85) 
    .Select(n => n.ID).ToList(); 
+0

腦屁!這樣可行。謝謝 – zeencat

4

也許這應該是

n.Token.Distance(s) >= .85) 

只是一個錯字:-)

+0

只是一個腦屁!謝謝 – zeencat

3

沒有人有什麼祕訣嗎?

我有一個提示......從來沒有使用「大於」,只使用「小於」。

.Where(n => .85 <= n.Token.Distance(s)) 

我遵循這個規則,主要是因爲日期的邏輯。比較5組日期時,最好不要犯錯誤閱讀標誌的錯誤。小的一個在左邊,大的在100%的時間在右邊。

.Where(acct => acct.CreateTime <= now 
    && acct.StartTime <= order.OrderDate 
    && order.FulfilledDate <= acct.EndTime)