在 Silverlight 的域服务中使用 Linq

本文关键字:Linq 服务 Silverlight | 更新日期: 2023-09-27 18:33:51

问这个问题我有点内疚,因为之前问过一个问题,但我没有得到明确的答案。我正在构建一个 silverlight 程序,我需要在域服务中创建一个 Linq 查询(使用 wcf ria)。我需要计算总和,这是我的代码

int lola = (from c in context.GetTRANSACTIONSQuery()
            where ((c.CHART_ACC == transStudID) && (c.sch_year == 13))
            select c).Sum();
MessageBox.Show(lola.ToString());

Sum()的括号之间,我收到一个错误,说

错误 1 实例参数:无法从"System.ServiceModel.DomainServices.Client.EntityQuery"转换为"System.Collections.Generic.IEnumerable"

我错过了什么??我知道这是语法问题,因为我是 Linq 的新手。请谢谢!

在 Silverlight 的域服务中使用 Linq

你为 Sum() 加了什么?你能试试吗:

int lola = (from c in context.GetTRANSACTIONSQuery()
            where ((c.CHART_ACC == transStudID) && (c.sch_year == 13))
            select c.PROPERTYTHATYOUWANTTOADDUP).Sum();

或者,也许您想计算有多少项目与您的查询匹配?

int lola = (from c in context.GetTRANSACTIONSQuery()
            where ((c.CHART_ACC == transStudID) && (c.sch_year == 13))
            select c).Count();

编辑:

因此,由于您要添加 AMOUNT 属性:

decimal lola = (from c in context.GetTRANSACTIONSQuery()
            where ((c.CHART_ACC == transStudID) && (c.sch_year == 13))
            select (decimal)c.AMOUNT).Sum();

您还可以确保 c.AMOUNT 永远不会为空,这样将来就不会遇到错误:

decimal lola = (from c in context.GetTRANSACTIONSQuery()
            where ((c.CHART_ACC == transStudID) && (c.sch_year == 13) && (c.AMOUNT != null))
            select (decimal)c.AMOUNT).Sum();