当前位置: 首页 > 编程语言 > C#

动态LINQ日期时间比较字符串构造-LinqTo实体共享

时间:2023-04-10 16:52:22 C#

动态LINQ日期时间比较字符串构造-LinqToEntity我正在使用ScottGuthrie的动态LINQ库以及实体框架和C#。我必须根据几个因素将where字符串构建到一个变量中,然后将字符串变量传递给where子句。出于某种原因,这将起作用:ContactList=ContactList.Where("DateAdded>=@0",DateTime.Parse("12/1/2012"));但这不起作用stringWhereClause=string.Format("DateAdded>={0}",DateTime.Parse("12/1/2012"));ContactList=ContactList.Where(WhereClause);如上所述,我在传递变量的版本中需要这个。有谁知道为什么第二个不起作用?提前致谢!我能够使用此处的信息使用略有不同的字符串格式。这样做对我来说很好:ContactList.Where("DateAdded>=DateTime(2013,06,18)")请注意,这与DateTimeOffset列完全不兼容。我似乎无法使用当前的DynamicLINQ库执行此操作。Tilak在下面很好地概述了它为什么不起作用。我的解决方案是修改DynamicLINQ库以允许将查询编写为字符串并传递给日期/时间数据类型的where子句。PaulHatcher在这里找到了修改:LINQTOSQL,DATE类型字段的动态查询ObjectQuery.Where重载接受2个参数。stringpredicateparamsObjectParameter[]parameters在您的第一个示例中,Where使用ObjectParameter参数(使用ObjectParameter名称、类型和值)构建查询(where子句)在第二个示例中,传递的任何内容都被视为最终where子句(无内部转换基于传递的参数的数据类型)。基于RichardRout的选择,稍作修改:ContactList.Where("DateAdded>=DateTime(2013,06,18)")这适用于我的Linq2Entities解决方案。注意日期时间不是日期。希望这能帮我解决这个问题给我带来的麻烦。ContactList.Where可能有ContactList.Where引用非数字参数,例如DateTime。在第二个字符串中,没有引用日期。以上就是C#学习教程:动态LINQ日期时间比较字符串构造-LinqTo实体分享的全部内容,如果对大家有用还需要进一步了解C#学习教程,希望大家多多关注——本文来自网络收集,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: