IEnumerable 类型的 LINQ 对象不 return DataTable

LINQ object of IEnumerable type does not return a DataTable

有人可以简单地解释一下为什么我不能在以下 linq 对象(IEnumurable 类型)上使用 CopyToDataTable 方法吗?

var query = from r in SourceData.AsEnumerable()
        group r by r["fruitid"] into Dt
        select new
        {
        Group = Dt.Key,
        Sum = Dt.Sum((t)=> double.Parse(t["name"].ToString())) 
        };

提醒: 我的目标是在 GroupBy Clause

之后检索结果 DataTable

CopyToDataTable的泛型有限制。

看一下方法的声明:

public static DataTable CopyToDataTable<T>(this IEnumerable<T> source)
    where T : DataRow
{

}

如果您注意到第二行,则您的 IEnumerable<T> 必须是 DataRow 的可枚举。您拥有的是可枚举的匿名对象。

根据您的 DataTable 的来源、绑定等,还有许多其他方法可以完成您想要做的事情,但这就是为什么您没有可用的方法.