直接上代码:
private DataTable GetTable(DataTable dt)
        {
            IEnumerable<DataRow> query = from t in dt.AsEnumerable()
                                         group t by t.Field<string>("id")
                                             into s
                                             select new 
                                             {
                                                 sum = s.Sum(m => m.Field<int>("age")),
                                                 s.Key
                                             };
            
            DataTable boundTable = query .CopyToDataTable<DataRow>();
            return boundTable;
        }错误:无法将类型“System.Collections.Generic.IEnumerable<AnonymousType#1>”隐式转换为“System.Collections.Generic.IEnumerable<System.Data.DataRow>”。存在一个显式转换(是否缺少强制转换?)
返回类型问题,这个地方应该如何处理呢?我要返回的是一个table

解决方案 »

  1.   


    private DataTable GetTable(DataTable dt)
      {
      IEnumerable<DataRow> query = from t in dt.AsEnumerable()
      group t by t.Field<string>("id")
      into s
      select new  
      {
      sum = s.Sum(m => m.Field<int>("age")),
      s.Key
      };

      DataTable boundTable =new DataTable();
      boundTable.Columns.Add("sum");
      boundTable.Columns.Add("key");
      query.ToList().ForEach(q=>boundTable.Rows.Add(q.ItemArray));
      return boundTable;
      }
      

  2.   

    http://msdn.microsoft.com/en-us/library/bb386921.aspx
      

  3.   

    还是一样的错误,只要返回类型是IEnumerable<DataRow> 这个的时候,在 select new的时候 编译就有问题。
      

  4.   

    q107770540  我 就是参考 你在http://topic.csdn.net/u/20101026/13/c2eb772f-54a8-46d2-a147-71abeb5b7dd8.html 这个回的帖子,返回类型 是IEnumerable<DataRow>这个的时候,不用编译
    select new 已经用红色标识出来错误了(类型转换错),用var 可以,但不能转成table
      

  5.   

    LZ为什么不改用
    List<DataRow>呢
      

  6.   

    用list<DataRow> 一样的效果,不编译就已经提示错误了。
      

  7.   

    select new 此时返回的是匿名类,所以得用VAR ,不能指定具体类型:private DataTable GetTable(DataTable dt)
      {
      var  query = from t in dt.AsEnumerable()
      group t by t.Field<string>("id")
      into s
      select new  
      {
      sum = s.Sum(m => m.Field<int>("age")),
      s.Key
      };
        
      DataTable boundTable =new DataTable();
      boundTable.Columns.Add("sum");
      boundTable.Columns.Add("key");
      query.ToList().ForEach(q=>boundTable.Rows.Add(q.ItemArray));
      return boundTable;
      }
      

  8.   

    “AnonymousType#1”不包含“ItemArray”的定义,并且找不到可接受类型为“AnonymousType#1”的第一个参数的扩展方法“ItemArray”(是否缺少 using 指令或程序集引用?)
    用上面的也不行
      

  9.   

    引用 如下:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
      

  10.   

    Try:
    private DataTable GetTable(DataTable dt)
      {
      var query = from t in dt.AsEnumerable()
      group t by t.Field<string>("id")
      into s
      select new   
      {
      sum = s.Sum(m => m.Field<int>("age")),
      s.Key
      };

      DataTable boundTable =new DataTable();
      boundTable.Columns.Add("sum");
      boundTable.Columns.Add("key");
      query.ToList().ForEach(q=>boundTable.Rows.Add(q.sum,q.Key));
      return boundTable;
      }
      

  11.   

    Tim老兄  你那边 IEnumerable<DataRow> query 这样写 没问题?