【发布时间】:2019-08-24 03:36:52
【问题描述】:
我需要通过 DateTime 字段使用 Dynamic LINQ 过滤数据。
我正在尝试这样做:
public class MyClass
{
private DateTime datetime_field;
//...
//some other fields
//...
}
public void MyMethod(string where_clause)
{
List<MyClass> myData = new List<MyClass>()
{
//...
//initialization
//...
};
var query = myData.Where(where_clause).ToList();
myDataGridView.DataSource = query;
}
// usage
string value = DateTime.Now.ToString(); // for example
if (DateTime.TryParse(value, out DateTime dt))
MyMethod("datetime_field == DateTime(" + dt.Year + ", " + dt.Month + ", " + dt.Day + ", " + dt.Hour + ", " + dt.Minute + ", " + dt.Second + ")");
但是查询返回零记录。但是如果我设置比较方法>= 或<= 而不是==,则查询返回所需的记录数量。
也许我做错了什么?
更新:
我在这里找到了示例:https://stackoverflow.com/a/26450835/7760805,但我仍在寻找更好的解决方案。
更新:
由 Stef Heyenrath 解决。
【问题讨论】:
-
DateTimes 精确到一秒以下。尝试丢弃 datetime_field 的毫秒部分
-
@Flydog57,谢谢,它真的可以帮助我。但是如何使用动态 LINQ 忽略我的 datetime_field 的毫秒数?
标签: c# linq datetime equals dynamic-linq