0

私はEFでクエリを実行しており、すべてがうまく機能していますが、実際にはCHARであるdb 2フィールドにあります..それらは日付を保持しますが、数値の形式で、SQL Management Studioでdate1 > = date2 forを実行できます例と私はまた、私が持っている数字がこれら2つの日付の間に収まるかどうかを確認することもできます.

珍しいことではありませんが、基本的には日付を表すフィールドです (日付が進むにつれて数値が大きくなります)...

EF で >= を実行しようとすると、文字列に対してこれを行うことはできないと表示されます。その c# を理解しているので、Convert.ToDecimal(date1) を実行しようとしましたが、サポートされていないというエラーが表示されます。

データベースフィールドを変更するオプションはありません。それらは石で設定されています:-(

私がそれを機能させる方法は、詳細の要求であり、.ToListを実行してから.ToDecimalを使用すると機能しますが、もちろんこれはメモリ内で実行しています! これは EF のオブジェクトを無効にします。たとえば、queryable を使用してクエリに追加します。

私がそれを機能させる別の方法は、SQLクエリをdbcontextのSqlQueryに渡すことでしたが、ここでも多くのef機能が失われました。

誰でも助けることができますか?

私は本当に立ち往生しています

4

2 に答える 2

0

まず、AsEnumerable()代わりに を使用して、少なくともクエリの遅延実行を有効にすることができますToList()。ただし、実際にクエリを実行したときに、データベースがすべてのレコードを返す必要があるという事実は変わりません。

データベースがフィルタリングを実行できるようにするには、クエリが SQL と互換性がある必要があります。SQL では ToDecimal() を実行できないため、をand とmyvar同じ形式の文字列に変換して、クエリを作成することにより、文字列を直接操作する必要があります。dateStartdateEnd

于 2012-06-01T06:50:27.037 に答える