【问题标题】:LINQ object of IEnumerable type does not return a DataTableIEnumerable 类型的 LINQ 对象不返回 DataTable
【发布时间】:2016-09-08 12:39:51
【问题描述】:

谁能简要解释一下为什么我不能在以下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?它没有出现在 Intellisense 中吗?如果您仍然尝试,它不会编译吗?是否抛出异常?
  • 请告诉我们您遇到的错误。否则我们帮不了你
  • SourceData 是你的DataTable 吗?
  • @krillgar:它没有出现在 Intellisense 中。
  • @codelahiru: SourceData 确实是我的DataTable

标签: c# linq group-by asenumerable


【解决方案1】:

CopyToDataTable 的泛型类型存在限制。

看一下方法的声明:

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

}

如果您注意到第二行,您的IEnumerable&lt;T&gt; 必须是DataRows 的可枚举。你所拥有的是一个可枚举的匿名对象。

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

【讨论】:

  • 谢谢。我也可以通过前段时间Tim Schmelter 的有用反馈来完成您的回答。
猜你喜欢
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
相关资源
最近更新 更多