2017-01-03 4 views
0

同じ月のオールズ行を返すように私は値を照会していたDataTableを持っている:クエリの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(); 

私は特定の月の値のためにそれを照会する必要があるまで、それはOK作品:

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型のオペランドには適用できません。

私は期間のみを使用するとOKですが、明らかに月全体のデータは返されません。

私はここで何が欠けていますか?私のdatatableクエリにこの追加条件を追加するために必要なことは?

+2

あなたは... 1への権利「を2017年1月1日午前9時00分00秒」を比較するカント..あなたは月にそれを比較するために、フィールドの外に月を抽出しなければならない。.. – BugFinder

答えて

2

は、あなたが直接、月と日時を比較することはできません

+0

愚かな見落としている。それは期待どおりに働いた。ありがとうございました。 –

1

代わり(rows.Field<DateTime>("Date Loaded")).Month == period.Monthを試してみてください。月と比較するには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();