Search code examples
c#linq-to-dataset

Linq query "specific cast is not valid"


Following Linq to datatable query gives me error Specific cast is not valid.

decimal[] temp = dt.AsEnumerable()
    .Select(r => new
       {
           totLen = r.Field<decimal>("Quantity") 
                     * (r.Field<decimal>("Breath") 
                         * r.Field<decimal>("Length"))
       })
    .Cast<decimal>()
    .ToArray();

Can any one suggest me why?


Solution

  • You don't need to create anonymous type:

    decimal[] temp = dt.AsEnumerable()
        .Select(r => r.Field<int>("Quantity") 
                   * r.Field<decimal>("Breath") 
                   * r.Field<decimal>("Length"))
        .ToArray();