Silverlight Group by未处理WCF数据服务

Silverlight Group by未处理WCF数据服务,silverlight,linq-to-entities,wcf-data-services,Silverlight,Linq To Entities,Wcf Data Services,我有这个密码 数据摘要是一个类,而不是一个实体。我将其用于“选择新”的匿名类型 那么我有这个疑问 DateTime date1 = new DateTime(2003, 1, 1); DateTime date2 = new DateTime(2011, 1, 1); InitializeComponent(); var query = (from d in svc.Data where d.

我有这个密码

数据摘要是一个类,而不是一个实体。我将其用于“选择新”的匿名类型

那么我有这个疑问

        DateTime date1 = new DateTime(2003, 1, 1);
        DateTime date2 = new DateTime(2011, 1, 1);


        InitializeComponent();

        var query = (from d in svc.Data
                 where d.Date >= date1 && d.Date <= date2
                 group d by d.AccountID into g
                 orderby g.Key
                 select new DataSummary()
                 {
                     AccountID = g.Key.Value,
                     Total = g.Sum(d => (decimal) d.Value)
                 }) as DataServiceQuery<DataSummary>;


        query.BeginExecute(new AsyncCallback(r =>
        {
            try
            {
                this.grid.ItemsSource = query.EndExecute(r).ToList();
            }
            catch (Exception ex)
            {
                string message = ex.Message;
            }
        }), null);
DateTime date1=新的DateTime(2003,1,1);
DateTime date2=新的日期时间(2011,1,1);
初始化组件();
var query=(来自svc.Data中的d
其中d.日期>=日期1和d.日期(十进制)d.值)
})作为数据服务查询;
BeginExecute(新的异步回调(r=>
{
尝试
{
this.grid.ItemsSource=query.EndExecute(r.ToList();
}
捕获(例外情况除外)
{
字符串消息=例如消息;
}
}),空);
当我运行查询时,它表示不支持GROUPBY。 我看到了许多关于使用分组的WCF数据服务的问题。有人知道发生了什么吗

当我把代码放在服务器端时,它也会给我一个错误。我曾尝试在不使用group by的情况下使用datasummary检索信息,但效果良好。所以我别无选择


提前感谢

WCF数据服务客户端库不支持Group by,因为URL查询语言不支持此类运算符。我想知道你在哪里见过它,并提到它实际上是有效的


您可以将所有相关实体下载到客户端并在内存中的客户端上执行group by,也可以为此在服务器上创建服务操作。如果您选择服务操作方法,运行分组查询的能力取决于您用于数据服务的提供商(例如EF应该能够处理该问题)。

感谢Vitek,我在服务器端创建了一个服务运营商,但它也不起作用。它也这么说。不支持分组依据。现在我正在检查,似乎每个表中都没有所需的主键。[WebGet]public IQueryable GetTotals(){return(CurrentDataSource.Data.GroupBy(a=>a.AccountID)。选择(g=>new DataSummary(){AccountType=“”,AccountID=g.Key.Value,Value=g.Sum(p=>(decimal)p.Value)};}服务操作中的支持受到您在WCF数据服务下使用的提供程序的限制。因为你没有提到是哪一个,所以我不能对此发表评论。无论如何-即使它可以工作,创建任意新类型的事实也不会工作,因为服务操作只能返回已定义实体或复杂类型的枚举。您必须返回原语值或已定义的类型。另外请注意,当前客户端不支持解析来自返回复杂类型枚举的服务操作的响应。因此,我必须为我进行的每个查询创建一个实体???我觉得这很有趣。。。。我将学习这一部分,我正在使用sql server。非常感谢。我也有同样的问题。但目前我正在做一些丑陋的代码。仍然在寻找最好的。我的解决方案是创建一个循环,这样我就可以总结它们了。您可以尝试我的产品来实现这种OData服务。
        DateTime date1 = new DateTime(2003, 1, 1);
        DateTime date2 = new DateTime(2011, 1, 1);


        InitializeComponent();

        var query = (from d in svc.Data
                 where d.Date >= date1 && d.Date <= date2
                 group d by d.AccountID into g
                 orderby g.Key
                 select new DataSummary()
                 {
                     AccountID = g.Key.Value,
                     Total = g.Sum(d => (decimal) d.Value)
                 }) as DataServiceQuery<DataSummary>;


        query.BeginExecute(new AsyncCallback(r =>
        {
            try
            {
                this.grid.ItemsSource = query.EndExecute(r).ToList();
            }
            catch (Exception ex)
            {
                string message = ex.Message;
            }
        }), null);