var result = q.GroupBy(g => g.CREATE_USER).Select(s => new
            {
                userName = s.Key,
                count =s.Select(se=>se.PURCHASE_ITEM.PRODUCT_ID).Distinct().Count(),
                quantity = s.Sum(ss => ss.TRANSFER_QUANTITY)
            });
去掉 Distinct就没问题

解决方案 »

  1.   

    用 Distinct 报了什么错?按理应该是可以的(至少Linq to Sql 可以, LINQ to Entities好像没什么特别理由拒绝这种写法)或者你的Entities背后的数据库不支持 count(distinct __) ?
      

  2.   

    groupby后select key就是了,不用distinct
      

  3.   

     count =s.Select(se=>se.PURCHASE_ITEM.PRODUCT_ID).Distinct().Count(),if se.PURCHASE_ITEM is null, then you cannot get the PRODUCT_ID.so can you try this: count =s.Where(se=>se.PURCHASE_ITEM !=null).Select(se=>se.PURCHASE_ITEM.PRODUCT_ID).Distinct().Count(),
      

  4.   


    加上条件也一样报错
    ORA-00904: "Project1"."CREATE_USER": 标识符无效
      

  5.   

    ORA-00904: "Project1"."CREATE_USER": 标识符无效
      

  6.   

    error message is clearly enough, so delete the edmx file and generate it from latest database again
      

  7.   

    ORA-00904: "Project1"."CREATE_USER": 标识符无效这个要么是没有这个字段,要么就是这个linq出来的语句有错误,或者你的语句得出的结果有危险字符
      

  8.   

    没用的 去掉distinct 就好了。不知道什么原因 最后还是 自定义一个对象 循环GroupBy 赋值 解决
      

  9.   

    ORA-00904: "Project1"."CREATE_USER": 标识符无效这个要么是没有这个字段,要么就是这个linq出来的语句有错误,或者你的语句得出的结果有危险字符
    GroupBy 这个字段的
      

  10.   

    如果是这个错误信息, 我猜想生成的sql并不是最优的, 可能是distinct和count是套在两层里, 以至于在AS 成其他名字的时候, 没对正位置, 你试试:var result = q.GroupBy(g => g.CREATE_USER).Select(s => new
                {
                    CREATE_USER = s.Key,
                    count =s.Select(se=>se.PURCHASE_ITEM.PRODUCT_ID).Distinct().Count(),
                    quantity = s.Sum(ss => ss.TRANSFER_QUANTITY)
                });就是把userName 用真正的字段名, 看看是否就没错了