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