C# 使用MYSQL内置函数使用select查询筛选Datatable记录
我在其他帖子中看到了如何使用“筛选表记录,您不能在只支持少数方法的C# 使用MYSQL内置函数使用select查询筛选Datatable记录,c#,mysql,asp.net,C#,Mysql,Asp.net,我在其他帖子中看到了如何使用“筛选表记录,您不能在只支持少数方法的数据表中使用数据库函数。请查看以下链接中的表达式语法,以了解支持的内容: 请注意,DataTable只是一个内存中的集合,它甚至不知道数据的来源。它既不与数据库相关也不与数据库链接 如果要筛选具有复杂条件(如一年中的一周)的表,则应使用Linq to DataTable,而不是使用所有.NET方法: DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo; Calendar
数据表中使用数据库函数。请查看以下链接中的表达式语法,以了解支持的内容:
请注意,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();
DateTimeFormatInfo dfi=DateTimeFormatInfo.CurrentInfo;
日历校准=dfi.日历;
int week=cal.GetWeekOfYear(DateTime.Today,dfi.CalendarWeekRule,dfi.FirstDayOfWeek);
var rowsFiltered=来自表中的行。AsEnumerable()
让日期=行字段(“日期”)
其中date.Year==DateTime.Today.Year
&&week==cal.GetWeekYear(日期,dfi.CalendarWeekRule,dfi.FirstDayOfWeek)
选择行;
DataTable tblFiltered=table.Clone();//具有相同列的空表
foreach(行中的数据行已过滤)
tblFiltered.ImportRow(世界其他地区);
gvweeksch.DataSource=tblFiltered;
gvweeksch.DataBind();
那么,问题是什么?这不管用?任何异常或错误消息?未找到YEARWEEK-->errorgetting error,因为“源不包含任何数据行”。@初学者Stack1:然后筛选器未返回任何行。我已经编辑了我的答案。
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();