从datatable获取特定列

时间:2013-01-21 12:09:48

标签: c# datatable linq-to-dataset

我需要来自datatable的特定列来在DataGridView中绑定它。我有以下专栏。

  

工作1价格区域查看尺寸
      A 12 x 1 1.2 1 1.2
      A 12 y 2 2 2.2 4.4
      A 12 z 3 11 1 11

以上是我的数据表,我需要指定的列,即区域,Que,bre,大小[Que *(bre * Len)]
为了获得我在Linq-to-DataTable查询后使用过的这类数据。

 var data = dt.AsEnumerable().Select
                (r => new
                {
                    Area = r.Field<string>("Area"),
                    Que = r.Field<int>("Quantity"),
                    Breath = r.Field<decimal>("Breath"),
                    Length = r.Field<decimal>("Length"),
                    totLen = r.Field<int>("Quantity") * (r.Field<decimal>("Breath") * r.Field<decimal>("Length"))
                }).ToList();

但它不起作用,它没有任何价值,我不知道为什么? 谁能告诉我怎么能这样做? 如果有其他替代选项可供使用,我希望看到...

1 个答案:

答案 0 :(得分:0)

  

它给出错误“指定的演员表无效。”

因此,您在Field扩展程序中获得了InvalidCastException

您必须检查哪个列的类型与您指定的列不匹配,例如:

totLen = r.Field<int>("Quantity") * r.Field<decimal>("Breath") * r.Field<decimal>("Length")

如果三列中的任何一列的类型与您提供的类型不同,则上述将失败。可能Breath不是decimal而是double

编辑您的问题并提供数据库中的类型,我们可以帮助您确定正确的类型。