1

最初は、これはこの質問と重複していると思うかもしれませんが、そうではないことがわかるでしょう。

また、連続する行のグループを選択したいのですが、今回はエントリが電話番号であるため、文字列として保存されると考えてください。

私は次のようなものを試してきました:

var numbers = await (from a in context.Telephones
                     from b in context.Telephones
                     Convert.ToInt32(a.Number) < Convert.ToInt32(b.Number) &&
                     Convert.ToInt32(b.Number) < (Convert.ToInt32(a.Number) + numberQuantity)
                     group b by new { a.Number }
                         into myGroup
                         where myGroup.Count() + 1 == numberQuantity
                         select myGroup.Key.Number).ToListAsync();

しかし、これは失敗します:

LINQ to Entities はメソッド method を認識せず'Int32 ToInt32(System.String)'、このメソッドをストア式に変換できません。

LINQ to Entities がサポートしていないことは理解していConvert.ToInt32ますが、それを機能させるためのアイデアが不足しています。

したがって、私のデータベースに次のものがある場合:

2063717608
2063717609
2063717610
2063717611
2063717613
2063717614

文字列値に基づいて連続する行を選択するにはどうすればよいですか? 3 つの連続する数字をクエリすると、次のような結果が得られます。

  • 2063717608 から 2063717610 まで
  • 2063717609 から 2063717611 まで
4

1 に答える 1

1

1- 呼び出しによるパフォーマンスの副作用を認識している場合はAsEnumerable()、クエリをキャストし、取得したエンティティのメモリ内で変換を行います。

2- 解決策 #1 が必要ない場合は、変換の問題を解決する方法を探す必要があります。

2-1- データベースの列の型を int に変更する

2-2- または、次のような他の開発者によって以前に提案されたソリューションの 1 つを選択します。

Linq で int を文字列に変換してエンティティに変換する際の問題

于 2013-09-23T18:42:37.917 に答える