System.Linq.Dynamic和DateTime

Mat*_*ood 12 c# linq dynamic system.linq.dynamic

我正在使用System.Linq.Dynamic在.Net MVC 1.0中执行ajax调用的自定义where子句.

它适用于字符串,int等但不适用于DateTime,我得到的异常无法将String与DateTime进行比较.非常简单的测试代码是

items = items.Where(string.Format(@"{0}> {1} {2} {1}",searchField,delimiter,searchString));

其中searchField将是例如start_date,数据类型是DateTime,分隔符是"(没有尝试过),searchString将是2009年1月1日(也在01/01/2009尝试过),并且items是一个IQueryable来自LinqToSql.

有没有办法在动态中指定数据类型,或者有更好的方法.它目前已经使用一些反射来确定需要什么类型的分隔符.

tva*_*son 18

我认为您可以将searchString转换为DateTime并将其作为参数传递给动态where方法本身.

itmes = items.Where( string.Format( "{0} > @0", searchField ),
                     DateTime.Parse( searchString ) );
Run Code Online (Sandbox Code Playgroud)

  • 谢谢 items = items.Where(string.Format("{0} > @0", searchField), new DateTime(2001, 1, 15)); 效果很好 (2认同)

小智 6

yourlist.Where("PostDate > DateTime(2013, 07, 24)");
Run Code Online (Sandbox Code Playgroud)