単純なlinq選択クエリを記述しようとしています。where句では、値はテキストボックスから取得されます。日時値の場合に問題があります。これでうまくいきます:
var rawData = contextSearch.GetType().GetProperty(TableName).GetValue(contextSearch, null);
truncatedData = ((IQueryable<object>)rawData).Where(columnName + ">=@0", DateTime.Parse(txtCrudSearch.Text)).ToList();
これは<=でも機能しますが、指定された日付のレコードを正確に検索する必要があります。だから、これを試してみると:
truncatedData = ((IQueryable<object>)rawData).Where(columnName + "=@0", DateTime.Parse(txtCrudSearch.Text)).ToList();
動作しません。どうして?これを機能させるにはどうすればよいですか?参考:columnnameはコンボボックスから動的に取得され、エンティティフレームワークを使用しています。
日付を比較して時間を無視するだけの場合は、これを試してください:
var parsedDt = DateTime.Parse(txtCrudSearch.Text);
var nextDay = parsedDt.AddDays(1);
truncatedData = ((IQueryable<object>)rawData)
.Where(columnName + ">= @0 && " + columnName + " < @1", parsedDt, nextDay)
.ToList();