linq count/groupby不工作

Cla*_*ear 2 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;
    }
Run Code Online (Sandbox Code Playgroud)
  • tblTradersCategories加入tblTraders/tblCategories
  • 单个交易者可以有许多类别
  • 单个类别可以有许多交易者

在此先感谢您的帮助.

克莱尔

Jon*_*eet 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 };
Run Code Online (Sandbox Code Playgroud)

如果你想在你的Count类中使用它,你可能需要使用AsEnumerable()来执行转换过程:

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

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

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 };
Run Code Online (Sandbox Code Playgroud)

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