我的代码如下,如果这样没有问题:DataSet ds = EC.XmlObject.GetXml(Server.MapPath("../vvvvv/2009123000353/aa.xml"));
       
        DataTable dt = ds.Tables[0];
        //按CreateDate排序
        EnumerableRowCollection<DataRow> query = from order in dt.AsEnumerable()
                                                 orderby DateTime.Parse(order.Field<string>("CreateDate")) descending
                                                 select order;        DataView view = query.AsDataView();        GridView1.DataSource = view;
        GridView1.DataBind();
但我只想要头两行,更改代码如下:DataSet ds = EC.XmlObject.GetXml(Server.MapPath("../vvvvv/2009123000353/aa.xml"));
       
        DataTable dt = ds.Tables[0];
        //按CreateDate排序
        EnumerableRowCollection<DataRow> query = (from order in dt.AsEnumerable()
                                                 orderby DateTime.Parse(order.Field<string>("CreateDate")) descending
                                                 select order).Take(2);        DataView view = query.AsDataView();        GridView1.DataSource = view;
        GridView1.DataBind();
就提示:编译器错误消息: CS0266: 无法将类型“System.Collections.Generic.IEnumerable<System.Data.DataRow>”隐式转换为“System.Data.EnumerableRowCollection<System.Data.DataRow>”。存在一个显式转换(是否缺少强制转换?).Take(2) 错误我该怎么样写才对?我只想取出数据的头两行

解决方案 »

  1.   

    EnumerableRowCollection<DataRow> query 改成
    var query设个断点,跟一下query输出的是什么类型
      

  2.   

    应该是IEnumerable<DataRow>,估计因为Take是IEnumerable<>的扩展方法,返回的也是IEnumerable<>
      

  3.   


    var query = (from order in dt.AsEnumerable()
                                                      orderby DateTime.Parse(order.Field<string>("CreateDate")) descending
                                                      select order).Take(2);
            //DataView view = query.AsDataView();        GridView1.DataSource = query;
            GridView1.DataBind();
    执行后的结果却是
    RowError HasErrors 
       
       
      

  4.   

    用Take只能写成查询操作符,不能是C#语法。
      

  5.   

    var query = (from order in dt.AsEnumerable()
     orderby DateTime.Parse(order.Field<string>("CreateDate")) descending
     select order).Take(2)).ToList(); 
      

  6.   


    DataSet ds = EC.XmlObject.GetXml(Server.MapPath("../vvvvv/2009123000353/aa.xml"));
            DataTable dt = ds.Tables[0];
            var query = ((from order in dt.AsEnumerable() 
    orderby DateTime.Parse(order.Field <string>("CreateDate")) descending 
    select order).Take(2)).ToList();
            
            GridView1.DataSource = query;
            GridView1.DataBind();
    结果:RowError HasErrors 
    我把XML贴出来吧:
    <?xml version="1.0"?>
    <PhotoElement>
      <Photo PhotoName="f5bc33fc-8363-4392-93cf-6cd6a5778aef.jpg" CreateDate="2009/12/30 22:04:08" imgCo="" dirmc="vvvvv" dirAlbum="2009123000353" />
      <Photo PhotoName="d94d51ad-b6b0-499c-a1ba-25e64c9fff58.jpg" CreateDate="2009/12/30 22:04:08" imgCo="" dirmc="vvvvv" dirAlbum="2009123000353" />
      <Photo PhotoName="771e6178-a469-4172-a32b-27f65b832c7e.jpg" CreateDate="2009/12/30 22:04:59" imgCo="" dirmc="vvvvv" dirAlbum="2009123000353" />
      <Photo PhotoName="616daa7d-2163-4a38-9d54-04b88b67e1ae.jpg" CreateDate="2009/12/30 22:04:59" imgCo="" dirmc="vvvvv" dirAlbum="2009123000353" />
      <Photo PhotoName="18b8190e-b067-4553-ac95-57dfb60d6e7d.jpg" CreateDate="2009/12/30 22:07:15" imgCo="" dirmc="vvvvv" dirAlbum="2009123000353" />
      <Photo PhotoName="59b05478-50d8-4e39-9bc3-b98027b1a9e7.jpg" CreateDate="2009/12/30 22:07:15" imgCo="" dirmc="vvvvv" dirAlbum="2009123000353" />
    </PhotoElement>
      

  7.   

                var query = (from order in ds.Tables[0].AsEnumerable()
                             orderby DateTime.Parse(order.Field<string>("CreateDate")) descending
                             select order).Take(2).CopyToDataTable();
      

  8.   

    linq,想说爱你不容易~~,经测试,wjq方法解决问题!