2017-01-03 39 views
0

我有一個DataTable我敢查詢值:查詢數據表返回承滴盤行同月

res = (from rows in dtInvoicesStamped.AsEnumerable() 
     where rows.Field<string>("Centre Name") == col.Name && 
      (rows.Field<string>("Doc Type") == row.Name 
     select rows).CopyToDataTable(); 

它的工作原理確定,直到我需要它查詢特定月份的值:

res = (from rows in dtInvoicesStamped.AsEnumerable() 
     where rows.Field<string>("Centre Name") == col.Name && 
      (rows.Field<string>("Doc Type") == row.Name 
      && rows.Field<DateTime>("Date Loaded") == period.Month) 
     select rows).CopyToDataTable(); 

**的區別是4行以上代碼的

如果我嘗試添加的時期,這是一個月,它返回我的錯誤

運算符'=='不能應用於DateTime和Int類型的操作數。

如果我只使用期間,它會好的,但顯然它不會返回整個月份的數據。

我在這裏錯過了什麼?我需要做什麼才能將這個附加條件添加到我的數據表查詢中?

+2

你不能比較「2017年1月1日09:00:00」 1 ..其右..你必須每月提取出了場比較它月份.. – BugFinder

回答

2

嘗試(rows.Field<DateTime>("Date Loaded")).Month == period.Month代替

+0

最愚蠢遠眺。它按預期工作。謝謝。 –

1

你不能直接比較一個月日期時間。使用rows.Field<DateTime>("Date Loaded").Month與月份進行比較。

res = (from rows in dtInvoicesStamped.AsEnumerable() 
     where rows.Field<string>("Centre Name") == col.Name && 
      (rows.Field<string>("Doc Type") == row.Name 
      && rows.Field<DateTime>("Date Loaded").Month == period.Month) 
     select rows).CopyToDataTable();