代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

如何在LINQ中将更多的列添加到分组结果中?

  •  4
  • Edward Tanguay  · 技术社区  · 7 年前

    我有一个LINQ语句,它生成一组字符串:

    如何更改此LINQ查询,使其生成一组int/string数组,以便在结果中也包含语言ID?< >

    像这样的:

    用户中来自u的 在u.languageid等于l.id的语言中加入l 按L.名称将U组转换为G组 orderby g.count()降序 选择new id=l.id,name和count=g.key+“(”+g.count()+“)”

    尝试失败:

    .

    如何更改此LINQ查询,使其生成一组int/string数组,以便在结果中也包含语言ID?

    像这样:

    from u in Users
    join l in Languages on u.LanguageId equals l.Id
    group u by l.Name into g
    orderby g.Count() descending
    select new { Id = l.Id, NameAndCount = g.Key + " (" + g.Count() + ")" }
    

    尝试失败:

    enter image description here

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  2
  •   Maulana Mango    7 年前

    from u in Users
    join l in Languages on u.LanguageId equals l.Id
    group l by new { l.Id, l.Name } into g
    orderby g.Count() descending
    select new { Id = g.Key.Id, NameAndCount = g.Key.Name + " (" + g.Count() + ")" }
    

    .Key

    // ...
    group l by new { MyId = l.Id, MyName = l.Name } into g
    orderby g.Count() descending
    select new { Id = g.Key.MyId, NameAndCount = g.Key.MyName + " (" + g.Count() + ")" }
    

    // ...
    group l by new { l.Id, l.Name } into g
    orderby g.Count() descending
    select new { Id = g.Key.Id, NameAndCount = g.Key.Name + " (" + g.Count() + ")", UserList = g.ToList() }
    
        2
  •  4
  •   Ipsit Gaur    7 年前

    Id Name FirstOrDefault

    from u in Users
    join l in Languages on u.LanguageId equals l.Id
    group l by l.Id into g
    orderby g.Count() descending
    select new { Id = g.Key, NameAndCount = g.First().Name + " (" + g.Count() + ")" }