我不确定我是否正确地走这条路。我有一个Silverlight应用程序,并使用实体框架的很多。我有两个实体映射到我的数据库:标题和详细信息。我想提交一个左外联接来获取所有标题和详细信息 - 即使标题记录没有详细记录。这是我想从客户端运行的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<T>()
方法(客户端上下文)将其提交给服务器。因为这个方法需要一个类型,我不知道如何构建调用以返回一个匿名类型,因为我在上面?
我这样做是错的吗?我应该在这样的事情上使用Invoke方法吗?如果是这样,我如何以及在何处定义我想要返回的类型?
是否有人可以指出我正确的方向,我会真正批评它。
谢谢... Scott
答案 0 :(得分:5)
您无法返回匿名类型。它们必然是当前范围的本地。
您的查询看起来正确,但您需要返回一个命名类型:
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<MyHelper>
:
public IEnumerable<MyHelper> GetInfo()
{
var query ...
return query;
}
答案 1 :(得分:1)
您永远不能从方法返回作为匿名类型实例的值。匿名类型始终方法的本地。如果你想通过WCF返回一个类型,你将不得不自己编写类,而不是依赖于匿名类型。