2

几天来,我只是第一次使用 linq to sql 和 lambda 表达式,我想做以下事情。

我有一个返回双精度的字符串扩展方法。扩展方法测试两个字符串并返回相似度分数。我有一个使用 linq to sql 的表中的列中的字符串值列表,我想使用扩展方法作为过滤出唯一那些相似度分数等于或大于输入字符串的字符串的方法。

到目前为止,我已经得到了以下内容。我似乎无法测试返回的双精度值。

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

距离方法是返回双精度的扩展方法。Token 和 s 都是字符串。ID 是表中的整数 ID 字段。

有没有人有任何提示?

4

3 回答 3

9

大于或等于运算符 is ,>=not =>

List<int> ids =
  dc.ErrorIndexTolerances.Where(n => n.Token.Distance(s) >= .85)
  .Select(n => n.ID).ToList();
于 2012-05-22T16:22:33.157 回答
4

也许这应该是

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

只是一个错字:-)

于 2012-05-22T16:22:53.123 回答
3

有没有人有任何提示?

我有一个提示...永远不要使用“大于”,只使用“小于”。

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

我遵循这条规则主要是因为日期逻辑。在比较 5 组日期时,最好不要误读标志。小的在左边,大的在右边,100% 的时间。

.Where(acct => acct.CreateTime <= now
  && acct.StartTime <= order.OrderDate
  && order.FulfilledDate <= acct.EndTime)
于 2012-05-22T17:06:17.720 回答