我希望有人可以帮我解决这个令人费解的问题!
在过去,我使用以下语句来获取List<DataTable>
,其中列表中的每个DataTable
都包含&中每个不同名称的所有记录。 34;名称&#34; &#34; inputDT&#34;的列数据表。
换句话说,此代码输出一个表列表,其中每个表包含特定名称的数据:
List<DataTable> listOfSerialNumberDataTables = inputDT.AsEnumerable().GroupBy(row => row.Field<string>("Name")).Select(g => g.CopyToDataTable()).ToList();
我现在想做类似的事情,除了我想按DateTime
列进行分组,其中DataTable
中的每个List<DataTable>
都包含已有的记录相同的日期(无论时间如何)。
所以我尝试创建代码,创建一个列表,其中list<DataTable>
中的表格将包含特定日期的所有数据。
例如,其中一个表格将包含2016年10月1日的所有数据,列表中的另一个表格将包含10月3日的数据等。[PS我并不担心列的输出的格式 - 这个问题只是获取DataTables的列表,其中的数据是针对特定日的。]
[注意 - 所有日期都在表格中。因此,我不期望一个空列表中的日期不在dataTable中。抱歉,如果这很明显!]
我在哪里: 经过多次努力之后,我想出了类似的东西,但我不确定如何完成它:
List<DataTable> listOfDaysForSingleSerialNo = datatable.AsEnumerable().GroupBy(x => EntityFunctions.TruncateTime(x.Field<DateTime>("DateOfResult"))).<what goes here?>
我感到困惑。有人可以帮忙吗?这实际上是否可以使用LINQ?
提前感谢您的帮助。
答案 0 :(得分:1)
如果我理解正确你想做同样的事情,除了在另一列上。
所以唯一应该改变的是进入GroupBy()
方法的表达式:
List<DataTable> listOfDaysForSingleSerialNo = datatable.AsEnumerable().GroupBy(x => x.Field<DateTime>("DateOfResult").Date).Select(g => g.CopyToDataTable()).ToList();
修改强>
EntityFunctions.TruncateTime
方法仅适用于LINQ to Entities(msdn),因此GroupBy()
无法使用它。相反,您只需获取Date
的{{1}}属性。