linq count / groupby不工作

时间:2010-08-03 09:45:45

标签: linq

我想按类别进行分组,然后对此进行分析。但我不知道该怎么做。我尝试了几种没有成功的方法。这是我的最新消息:

public class Count
{
    public int TradersCount { get; set; }
    public int Id { get; set; }
    public string Description { get; set; }       
}


    public IQueryable<Count> CountTradersAttachedToCategories()
    {
        var data = from tc in _db.tblTradersCategories
                   select new Count
                  {

                        Description = tc.tblCategory.description,
                        Id = tc.tblCategory.categoryId,
                        TradersCount = tc.Select(x => x.categoryid).GroupBy().Count()

                   };

        return data;
    }
  • tblTradersCategories加入两者 tblTraders / tblCategories
  • 单个交易者可以有多个类别
  • 单个类别可以有许多交易者

提前感谢您的帮助。

克莱尔

1 个答案:

答案 0 :(得分:6)

试试这个:

var data = from tc in _db.tblTradersCategories
           group tc by new { tc.tblCategory.categoryId,
                             tc.tblCategory.description } into g
           select new { Count = g.Count(),
                        Id = g.Key.categoryId,
                        Description = g.Key.description };

如果您希望在Count课程中 ,则需要使用AsEnumerable()来执行正在进行的转换:

var converted = data.AsEnumerable()
                    .Select(c => new Count { TradersCount = c.Count,
                                             Id = c.Id,
                                             Description = c.Description });

您可以尝试一次性完成所有操作:

var data = from tc in _db.tblTradersCategories
           group tc by new { tc.tblCategory.categoryId,
                             tc.tblCategory.description } into g
           select new Count { TradersCount = g.Count,()
                              Id = g.Key.categoryId,
                              Description = g.Key.description };

但我不知道这是否有效。这取决于LINQ提供程序如何处理它。