2014-10-08 53 views
0

我已經看到了其他職位,如何篩選使用「<」「=」條件表中的記錄,但我想用mysql內置的功能,如,過濾DataTable中的記錄與選擇查詢使用MYSQL內置功能

日期,年周

datatable table; //--> it contains my result 

    DataRow[] foutput = table.Select("YEARWEEK(Date) = 'YEARWEEK(CURRENT_DATE)'"); 

    gvweeksch.DataSource = foutput; 
    gvweeksch.DataBind(); 
+0

那麼,是什麼問題?這不行?任何異常或錯誤信息? – 2014-10-08 07:58:09

+0

YEARWEEK - >未找到錯誤 – BeginnerStack1 2014-10-08 08:37:16

回答

1

您不能在只支持很少方法的DataTable中使用數據庫函數。看看錶達式的語法在下面鏈接查看什麼是支持:

http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression(v=vs.110).aspx

注意,一個DataTable只是在內存中的保藏不知道數據的來源。它既不相關也不與數據庫鏈接。

如果你想和喜歡,你擁有所有的.NET方法,你應該使用Linq-To-DataTable而不是一年的一週複雜條件來過濾表:

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(); 
+0

由於「源不包含DataRows」而出現錯誤。 – BeginnerStack1 2014-10-08 09:02:04

+0

@ BeginnerStack1:然後過濾器不返回任何行。我編輯了我的答案。 – 2014-10-08 09:23:36