2

私は数日間初めてlinq to sqlおよびlambda式で遊んでいただけで、次のことをしたいと思っています。

double を返す文字列拡張メソッドがあります。拡張メソッドは 2 つの文字列をテストし、類似度スコアを返します。linq to sql を使用してテーブル内の列の文字列値のリストがあり、拡張メソッドを使用して、類似度スコアが入力文字列以上の文字列のみを除外したいと考えています。

私はこれまでのところ以下を持っています。返された double の値をテストできないようです。

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

Distance メソッドは、double を返す拡張メソッドです。Token と s はどちらも文字列です。ID は、テーブル内の整数 ID フィールドです。

誰にもヒントはありますか?

4

3 に答える 3

9

より大きいか等しい演算子は,では>=ありません=>

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 に答える