我有一个DataTable,其日期按月分类年。我需要按日期过滤,所以我在考虑添加一个带有表达式的列来获取真正的DateTime列。这是处理这个问题的最佳方法吗? '转换'可以这样做吗?有点像...
dt.Columns.Add("RealDate", typeof(DateTime), "Convert(Month + '/1/' + Year, 'System.DateTime')");
答案 0 :(得分:1)
我会在填充DataTable的SQL中执行转换。这可能是内联SQL,存储过程或ORM。
让数据库引擎完成工作。不要花费大量资源在您的应用中执行这些转换和计算。
编辑:如果无法改变生成DataTable的过程,可以使用DataView RowFilter进行过滤,如下所示:
DataView dataView = dataTable1.DefaultView;
dataView.RowFilter = string.Format("Month = '{0}' && Year = '{1}'", Month, Year);
答案 1 :(得分:0)
由于没有人回答,我将重申我使用的代码:
dt.Columns.Add("RealDate", typeof(DateTime), "Convert(Month + '/1/' + Year, 'System.DateTime')");