Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Silverlight-LinqToEntities-如何返回匿名类型_C#_Silverlight_Entity Framework_Linq To Entities_Anonymous Types - Fatal编程技术网

C# Silverlight-LinqToEntities-如何返回匿名类型

C# Silverlight-LinqToEntities-如何返回匿名类型,c#,silverlight,entity-framework,linq-to-entities,anonymous-types,C#,Silverlight,Entity Framework,Linq To Entities,Anonymous Types,我不确定我是不是走对了路。我有一个Silverlight应用程序,很多时候都使用实体框架。我有两个实体映射到我的数据库:Header和Details。我想提交一个left-outter连接来获取所有的头和细节计数——即使头记录没有细节记录。以下是我希望从客户端运行的Linq查询: var query = from head in storeContext.Headers join detail in storeContext.Details on head.H

我不确定我是不是走对了路。我有一个Silverlight应用程序,很多时候都使用实体框架。我有两个实体映射到我的数据库:Header和Details。我想提交一个left-outter连接来获取所有的头和细节计数——即使头记录没有细节记录。以下是我希望从客户端运行的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()
方法将其提交到服务器。因为这个方法需要一个类型,所以我不知道如何构造调用以返回一个匿名类型,就像我上面提到的那样

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

如果有人能给我指出正确的方向,我会非常感激的


谢谢。。。Scott

您永远不能从方法返回匿名类型的实例值。匿名类型始终是方法的本地类型。如果要通过WCF返回类型,则必须自己编写类,而不是依赖匿名类型。

您永远不能从方法返回匿名类型的实例值。匿名类型始终是方法的本地类型。如果要通过WCF返回类型,则必须自己编写类,而不是依赖匿名类型。

不能返回匿名类型。它们必然是当前范围的局部

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

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 =
      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()
{
变量查询。。。
返回查询;
}

您不能返回注释性类型,无论您是否在WCF RIA中,或者您的任何可能的副本都不能返回注释性类型,无论您是否在WCF RIA中,或者什么可能的重复?你不能用
dynamic
包装匿名类型吗?@Jeff-我还没有玩过
dynamic
,所以我不知道。我也不知道,但我现在很好奇。我并不认为这一定是个好主意,但很有趣。谢谢你的帮助。这解决了我的问题。问:在clinet和服务器上创建helper类更好吗,还是只将Using添加到客户端?@Scott,您应该能够在服务器上创建类,如果您创建元数据类,它将自动在客户端上创建。您不能通过使用
动态
包装它来返回匿名类型吗?@Jeff-我还没有玩过
动态
,所以我不知道。我也不知道,但我现在很好奇。我并不认为这一定是个好主意,但很有趣。谢谢你的帮助。这解决了我的问题。问题:在clinet和服务器上创建helper类更好吗,还是只向客户端添加Using?Scott,您应该能够在服务器上创建该类,如果您创建元数据类,它将自动在客户端上创建。