サブコレクションを含むコレクションがあり、そのうちの 1 つは、DB に yyyymmdd 形式の文字列として格納されている日付フィールドです (「E」や 20085 などのランダムなものもいくつか含まれています)。この日付は、コレクション内のサブコレクションの 1 つでもあります。この日付フィールドは検索に使用されるため、実際の日付にして LINQ ステートメントで使用する必要があります。
LINQ to SQL は SQL に変換できないステートメントをサポートしていないことを知ったので、適切に変換された日付を返す関数を挿入できず、文字列を次のように変換する標準の変換関数をまだ見つけていません。有効な日付オブジェクト。
レイヤード変換も試しましたが、これは次のように悪臭を放ちました。
search = from c in search
where c.Object.Any(p=> new DateTime(Convert.ToInt32(p.theDate, Substring(0,4))))... etc.
ここで何をしても変換エラーが発生しました。
私の基本的な質問は次のとおりです。LINQ to SQL は、このような変換のためにインラインで何かをサポートしていますか? 別のオプションは、データモデルを変更するか、ビューを作成することですが、コードでこれを処理する方法があるかどうかを最初に確認したいと思います。私がやろうとしていることは、次のようなものです。
search = from c in search
where c.subcollection.Any(p=>p.theDate >= min) && c.subcollection.Any(p=>p.theDate <= max)
select c;
min と max は日付値で渡されます。
ありがとうございました!