日期:2014-05-17  浏览次数:21439 次

【求教】小小的问题,Linq to DataTable,有时间的麻烦进来看一下
本帖最后由 u010312979 于 2013-09-14 16:34:12 编辑
是这样子的,我现在有个DataTable,我要把它通过Linq分页然后再绑定到dataGridView上,由于不太熟悉Linq,所以我不知道该怎么写..麻烦好心人贴个代码,最好给个学习Linq的思路!

DataTable dt = (DataTable)dataGridView1.DataSource;
dataGridView1.DataSource = ??.Skip<PeopleInfo>(pageSize * pageNum)
    .Take<PeopleInfo>(pageSize);

------解决方案--------------------
我从来不使用DataTable、DataSet,我都是使用强类型的对象。

随便写一下,肯定有更好更简单的写法:
var nt = dt.Clone();
dt.Rows.OfType<DataRow>()
    .Skip(pageSize * ( pageNum-1) )
    .Take(pageSize )
    .ToList()
    .ForEach(r => nt.Rows.Add(r));

------解决方案--------------------
using System.Data;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            var dg = new DataGridView();
            dg.Dock = DockStyle.Fill;
            Controls.Add(dg);

            var dt = new DataTable {Columns = {new DataColumn("c1"), new DataColumn("c2")}};
            dt.Rows.Add(1, 2);
            dt.Rows.Add(3, 4);
            dt.Rows.Add(5, 6);

            dg.DataSource = dt.AsEnumerable().Skip(1).CopyToDataTable();