C# 是否按多个表分组,并且仍然可以访问原始查询?
我试着加入,然后分组,我返回的分组信息很棒!工作起来很有魅力,但如果有意义的话,我仍然需要访问分组之外的值 我发现了一个关于stackoverflow的例子,这可能更好地解释了它C# 是否按多个表分组,并且仍然可以访问原始查询?,c#,sql,linq,linq-to-entities,group-by,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 { C
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”
我希望有人能帮忙
提前感谢如果在小组中总是一样的话,第一个就足够了
ContactWhatever = g.First().Contact.Whatever
否则请使用@Andrei答案
或
您打算如何处理co.Order.无论什么?我只想打印值。。。。分组记录的值将始终相同。。。
ContactWhatever = g.Select(o => o.Contact.Whatever).Aggregate((a,b) => a + "," + b)