从LINQ到DataTable中的单个查询的10行DataTable列表

时间:2012-12-23 03:22:06

标签: asp.net linq datatable

我偶然发现了这段代码here

 List<DataTable> result = DTHead.AsEnumerable()
            .GroupBy(row => row.Field<int>("MIVID"))
            .Select(g => g.CopyToDataTable())
            .ToList();

根据特定字段的值创建List DataTable个。

是否可以调整此代码,而不是根据记录数创建List DataTables?例如,如果我有18条记录,我希望它分成2 DataTables,每行10行(第二个表的最后两行是空的)。如果我有35条记录,我最终得到4 DataTable个,最后5行在表4中为空。

谢谢!

1 个答案:

答案 0 :(得分:0)

这就像标准的分页机制:

var result = DTHead.AsEnumerable();

int pageSize = 10;
int pages = result.Count / pageSize + 1;
for (int i = 0; i < pages; i++)
{
    var page = result.Skip(i * pageSize).Take(pageSize).Select (t => t.Name)
                     .CopyToDataTable();
}

当然,在循环中你必须使用page变量做一些有意义的事情。