获取值

时间:2015-12-22 12:47:22

标签: linq

这是我的linq查询从第一个集合获取数量和数量数量 - 第二个集合数量和第一个集合数量 - 第二个集合数量,有时候第一个集合RM不包含第二个集合

var summary = (from r in firstCollection
                       join s in secondCollection
                       on new { r.RM, r.Size } equals new { s.RM, s.Size }
                       group new { r, s } by new { RM = r.RM, Size = s.Size, Qty = (r.Qty - s.Qty), Number = (r.Number - s.Number) }
                           into grp
                           select new
                               {
                                   RM = grp.Key.RM,
                                   RMsize = grp.Key.Size,
                                   Qty = grp.Key.Qty,
                                   Number = grp.Key.Number
                               }).ToList();

有一个错误,如

  

附加信息:按表达式分组只能包含   服务器可比较的非常量标量。表达方式   使用类型' Manufacturing.DataAccess.tbl_RawMaterial'不是   可比性。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您可以先投射到匿名类型,然后进行分组。试试这个:

var summary = (from r in firstCollection
                join s in secondCollection
                on new { r.RM, r.Size } equals new { s.RM, s.Size }
                select new
                {
                    RM = r.RM,
                    Size = s.Size,
                    Qty = (r.Qty - s.Qty),
                    Number = (r.Number - s.Number)
                } into tmp
                group tmp by new
                {
                    RM,
                    Size,
                    Qty,
                    Number
                } into grp
                select new
                {
                    RM = grp.Key.RM,
                    RMsize = grp.Key.Size,
                    Qty = grp.Key.Qty,
                    Number = grp.Key.Number
                }).ToList();

答案 1 :(得分:1)

看起来问题是<div ng-class="getCSSClass(field.LongQuestion, field.TrueClass, field.DefaultClass)"></div> 成员,我假设它是 $scope.getCSSClass = function(class, trueClass, defaultClass) { if(class) return trueClass; else return defaultClass; } 类型的一些导航属性。正如异常消息所述,您只能按简单属性进行分组。

假设您的实体RM主键名为Manufacturing.DataAccess.tbl_RawMaterial(您可以将其替换为实际名称)。然后查询可能是这样的

Manufacturing.DataAccess.tbl_RawMaterial