6

我试图加入然后分组,我返回的分组信息很棒!就像一个魅力,但我仍然需要访问分组之外的值,如果这有意义的话..

我在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”

我希望有人能帮帮忙。

提前致谢

4

1 回答 1

0

如果在组中始终相同,则第一个就足够了...

ContactWhatever = g.First().Contact.Whatever

否则使用@Andrei 回答或

ContactWhatever = g.Select(o => o.Contact.Whatever).Aggregate((a,b) => a + "," + b)
于 2012-06-14T08:47:27.483 回答