1

Enquiry という名前の linq Entity があります。これには、string DateSubmitted というプロパティがあります。

特定の日付範囲内に DateSubmitted がある Inquiry に対して IQueryable を返す必要があるアプリを作成しています。

理想的には、次のようなものを書きたいと思います

IQueryable<Enquiry> query = Context.EnquirySet.AsQueryable<Enquiry>();
int dateStart = int.Parse("20090729");
int dateEnd = int.Parse("20090930");

query = (from e in query
     where(enq => int.Parse(enq.DateSubmitted) < dateEnd)
     where(enq => int.Parse(enq.DateSubmitted) > dateStart)
     select e);

明らかに、Linq to EF は int.Parse を認識しないので、述語を返す Expression メソッドで目的を達成できると思いますか???

私は PredicateBuilder をいじっていろいろと調べてきましたが、これを解決しようとして脳みそを揚げることに成功しました。確かに、エンティティに別のプロパティを追加してそこで変換することはできますが、これを本当に理解したいと思います。誰かが私の頭脳を揚げない例/リンクを説明または与えることができますか?

前もって感謝します

マーク

4

1 に答える 1

3

日付文字列が有効であり、実際にその順序 (自然な並べ替え順序) であることがわかっている場合は、文字列比較を回避できる可能性があります。

IQueryable<Enquiry> query = Context.EnquirySet.AsQueryable<Enquiry>();
string dateStart ="20090729";
string dateEnd = "20090930";

query = (from e in query
     where(enq => enq.DateSubmitted.CompareTo(dateEnd)) < 0)
     where(enq => enq.DateSubmitted.CompareTo(dateStart)) > 0)
     select e);
于 2009-09-30T15:33:04.237 に答える