执行LINQ语句后如何避免匿名类型?

时间:2013-08-22 16:18:08

标签: c# linq entity-framework type-conversion

我需要将LINQ查询结果设置为double数组。 执行下一个语句后,我得到匿名类型,我无法将数组转换为double类型。我怎样才能做到这一点? 代码:

var rls = context.Test
    .GroupBy(cont => new
    {
        wd = System.Data.Objects.SqlClient.SqlFunctions.DatePart("weekday", cont.datetime),
        hh = System.Data.Objects.SqlClient.SqlFunctions.DatePart("hour", cont.datetime)
    })
    .Select(rs => new
        {
            rs.Key.wd,
            rs.Key.hh,
            count = rs.Count()
        }).Where(rs => rs.hh != null & rs.wd !=null).ToArray();

提前致谢。

1 个答案:

答案 0 :(得分:1)

问题是这个Select方法返回一个匿名类型,这成为该点之后查询的返回类型

.Select(rs => new
    {
        rs.Key.wd,
        rs.Key.hh,
        count = rs.Count()
    })

为了返回另一种类型,您需要另一个Select语句来创建要在管道中返回的新值。问题提到获得double返回,但不清楚您希望将哪个值作为double值。如果您只想返回说wd参数,那么您可以执行以下操作

.Where(rs => rs.hh != null & rs.wd !=null)
.Select(x => x.wd)
.ToArray();