Silverlight – LinqToEntities – 如何返回匿名类型

我不确定我是否正确地走这条路。 我有一个Silverlight应用程序,并使用entity framework的很多。 我有两个实体映射到我的数据库:标题和详细信息。 我想提交一个左外部联接以获取所有标题和详细信息 – 即使标题记录没有详细记录。 这是我想从客户端运行的Linq查询:

var query = from head in storeContext.Headers join detail in storeContext.Details on head.HeadId equals details.HeadId into group select new { Desc = head.Description, MyCount = group.Count() }; 

由于这是Silverlight,我需要构建我的查询,然后使用来自我的域服务(客户端上下文storeContext.Load()storeContext.Load()方法将其提交到服务器。 因为这个方法期待一个类型,我不知道如何构造调用以返回匿名类型,因为我在上面?

我做错了吗? 我应该在这样的事情上使用Invoke方法吗? 如果是这样,我如何以及在何处定义我想要返回的类型?

是否有人可以指出我正确的方向我真的应该是它。

谢谢……斯科特

您无法返回匿名类型。 它们必然是当前范围的本地。

您的查询看起来正确,但您需要返回一个命名类型:

 var query = from head in storeContext.Headers join detail in storeContext.Details on head.HeadId equals details.HeadId into group select new MyHelper // SPECIFY A CLASS HERE { Desc = head.Description, MyCount = group.Count() }; 

您的查询方法需要返回IEnumerable

 public IEnumerable GetInfo() { var query ... return query; } 

您永远不能从方法返回作为匿名类型实例的值。 匿名类型始终是方法的本地类型。 如果你想通过WCF返回一个类型,你将不得不自己编写类,而不是依赖于匿名类型。