从日期列获取按月过滤的行

use*_*053 1 c# linq date

我有一个数据表,其中记录的日期字段列的值为

11/1/2012
12/21/2012
12/22/2012
1/3/2013
1/5/2013
1/6/2013
1/7/2013
etc. 
Run Code Online (Sandbox Code Playgroud)

我想过滤记录并仅获取当前月份记录,即仅获取日期等于当前月份的行(将由DateTime.now查找).我们怎样才能用Linq和c#做到这一点.

Tim*_*ter 5

如果列的类型已经是DateTime:

DateTime now = DateTime.Now;
var thisMonthRows = table.AsEnumerable()
    .Where(r =>  r.Field<DateTime>("ColumnName").Year  == now.Year
              && r.Field<DateTime>("ColumnName").Month == now.Month);
Run Code Online (Sandbox Code Playgroud)

如果要从过滤的行中使用新的DataTable,请使用CopyToDataTable:

DataTable table = thisMonthRows.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)