3

SubsonicのFind<T>メソッドを使用して、「null」値を含むフィールドを持つ行を検索するにはどうすればよいですか。説明のために、「SynchronizedOn」というnull許容のDateTimeフィールドを含む「Visit」というac#クラスがあり、Subsonic移行によって対応する「Visits」テーブルと「SynchronizedOn」フィールドが作成されたと仮定します。 。

SQLクエリを自分で作成する場合は、次のように作成します。

SELECT * FROM Visits WHERE SynchronizedOn IS NULL

次のコードを使用する場合:

var visits = myRepository.Find<Visit>(x => x.SynchronizedOn == null);

Subsonicはそれを次のSQLクエリに変換します。

SELECT * FROM Visits WHERE SynchronizedOn == null

行を返すことはありません。

次のコードを試しましたが、エラーが発生します。

visits = repository.Find<Visit>(x => x.SynchronizedOn.HasValue);

次の構文を使用できました。

var query = from v in repository.All<Visit>()
            where v.SynchronizedOn == null
            orderby v.CreatedOn
            select v;
visits = query.ToList<Visit>();

Find<T>しかし、それはメソッドを使用するほど短いものではありません。

メソッドで「SynchronizedOnISNULL」条件を指定する方法を知っている人はいますFind<T>か?

4

1 に答える 1

1

次を使用できます。

var visits = myRepository.All<Visit>().Where(x => x.SynchronizedOn == null).ToList();
于 2009-08-10T04:15:49.947 に答える