带日期时间的动态 LINQ

Dynamic LINQ with datetime

我正在尝试编写一个简单的 linq select 查询,其中 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();

没用。为什么?我怎样才能让它工作?仅供参考:列名是从组合框中动态获取的,我正在使用 entity framework。

如果您只想比较日期而忽略时间,试试这个:

var parsedDt = DateTime.Parse(txtCrudSearch.Text);
var nextDay = parsedDt.AddDays(1);

truncatedData = ((IQueryable<object>)rawData)
                 .Where(columnName + ">= @0 && " + columnName + " < @1", parsedDt, nextDay)
                 .ToList();

(此方案基于@algreat answer)