c# - 按多个表分组并仍然可以访问原始查询?

标签 c# sql linq linq-to-entities group-by

我正在尝试进行连接,然后进行分组,返回的分组信息很棒!工作起来很有魅力,但我仍然需要访问分组之外的值,如果这有意义的话......

我在 stackoverflow 上找到了一个例子,它可能解释得更好

var query = from c in context.Contacts
            join o in context.Orders on c.Id equals o.CustomerId
            select new 
            { 
                Contact = c, 
                Order = o 
            } into ContactAndOrder
            group ContactAndOrder by ContactAndOrder.Order.Id into g
            select new 
            { 
                g.Key, 
                ContactWhatever = g.Sum(co => co.Contact.Whatever), 
                OrderWhatever = g.Sum(co => co.Order.Whatever) 
            };

现在这似乎工作得很好,问题是在我的情况下 co.Order.Whatever 是一个字符串所以我得到一个错误说不能将字符串转换为 int,我理解这是聚合函数 Sum 需要一个 int。 ...

我的问题真的是,是否有一个聚合函数或类似的东西我可以获得 co.Order.Whatever 的值(在我的例子中是一个字符串)

问题是一旦完成分组,我就失去了“c”和“o”

我希望有人能提供帮助。

提前致谢

最佳答案

如果组里总是一样的,First就够了...

ContactWhatever = g.First().Contact.Whatever

否则使用@Andrei Answer 或

ContactWhatever = g.Select(o => o.Contact.Whatever).Aggregate((a,b) => a + "," + b)

关于c# - 按多个表分组并仍然可以访问原始查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11027690/

相关文章:

c# - 使用文件 'key.pfx' 中的公钥对输出进行签名时出错——值不在预期范围内

c# - 使用自定义数据库而不是 ASPNETDB 的 ASP.NET MVC 身份验证?

c# - 将 IEnumerable 转换为 EntitySet

mysql - Innodb缓冲池和多重连接

c# - 将 linq 查询结果转换为枚举

c# - 访问 MemoryCache 会创建副本吗?

c# - Cassandra:参数类型不匹配

c# - 将列表创建的字典从 Python 转换为 C#

sql - 为什么 Sum 在数据库查询中给出 NULL

mysql - sql 计算两个值共享另一列中相同值的次数