匿名linq查询选择的返回类型是什么?发回这些数据的最佳方法是什么?

pun*_*ter 5 linq silverlight linq-to-entities silverlight-4.0

这是一个基本问题.我已经设置了基本的SL4/RIA项目,我想在域服务中创建一个新方法并从中返回一些数据.我不确定这样做的最简单的方法..我应该把它包装在ToList()中吗?我不清楚如何处理这个创建的匿名类型..什么是返回这些数据最简单的方法?

 public IQueryable<ApplicationLog> GetApplicationLogsGrouped()
    {
        var x = from c in ObjectContext.ApplicationLogs
                let dt = c.LogDate
                group c by new { y = dt.Value.Year, m = dt.Value.Month, d = dt.Value.Day } into mygroup
                select new { aaa = mygroup.Key, ProductCount = mygroup.Count() };

        return x;


        // return this.ObjectContext.ApplicationLogs.Where(r => r.ApplicationID < 50);
    }
Run Code Online (Sandbox Code Playgroud)

无法将类型'System.Linq.IQueryable <AnonymousType#1>'隐式转换为'System.Linq.IQueryable <CapRep4.Web.ApplicationLog>'.存在显式转换(您是否错过了演员?)58 20 CapRep4.Web

Jul*_*ain 3

匿名类型与任何其他类一样,但它是由编译器创建的。编译器生成的内容类似于:

class AnonymousType1 {
  public AnonymousType2 Key { get; set; }
  public int ProductCount { get; set; }
}

class AnonymousType2 {
  public int y { get; set; }
  public int m { get; set; }
  public int d { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

您无法访问这些类,因此如果您想保持强类型,您别无选择,只能使用与 Anonymous1 的定义匹配的自定义类。然后您将像这样使用它:new MyClass { Key = myGroup.Key, ProductCount = mygroup.Count() }