我在其他帖子中看到过如何使用'<'过滤表记录'='条件,但我想使用mysql内置函数,如
日期,周年等,
datatable table; //--> it contains my result
DataRow[] foutput = table.Select("YEARWEEK(Date) = 'YEARWEEK(CURRENT_DATE)'");
gvweeksch.DataSource = foutput;
gvweeksch.DataBind();
答案 0 :(得分:1)
您不能在仅使用少量方法的DataTable
中使用数据库函数。在下面的链接中查看表达式语法以查看支持的内容:
http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression(v=vs.110).aspx
请注意,DataTable
只是一个内存中的集合,它甚至不知道数据的来源。它既不相关也不与数据库相关联。
如果要过滤具有复杂条件的表,例如一年中的一周,则应使用Linq-To-DataTable
代替所有.NET方法:
DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
Calendar cal = dfi.Calendar;
int week = cal.GetWeekOfYear(DateTime.Today, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);
var rowsFiltered = from row in table.AsEnumerable()
let date = row.Field<DateTime>("Date")
where date.Year == DateTime.Today.Year
&& week == cal.GetWeekOfYear(date, dfi.CalendarWeekRule, dfi.FirstDayOfWeek)
select row;
DataTable tblFiltered = table.Clone(); // empty table with same columns
foreach (DataRow row in rowsFiltered)
tblFiltered.ImportRow(row);
gvweeksch.DataSource = tblFiltered;
gvweeksch.DataBind();