【问题标题】:LINQ Query (Group BY) one columnLINQ 查询(Group BY)一列
【发布时间】:2015-07-14 17:27:37
【问题描述】:

考虑以下类

public class DashboardTile
{
    public int ID { get; set; }
    public int? CategoryID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

public class DashboardTileBO : DashboardTile
{
    public bool IsChecked { get; set; }
    public List<DashboardTileBO> DashboardTiles { get; set; }
}

我有一个图块列表,其中一些图块是其他图块的子项。现在我想以这样一种方式显示我的图块列表,如果它有子项,它将被添加到列表中。

查询我正在尝试

 var allDashBoardTiles = (from a in context.DashboardTiles
                                         group a by a.CategoryID into b 
                                         select new BusinessObjects.DashboardTileBO
                                         {
                                             ID = a.ID,
                                             Name = a.Name,
                                             Description = b.Description,
                                             DashboardTiles = b.ToList(),
                                         }).ToList();

            var list = context.DashboardUserTiles.Where(a => a.UserID == userId).Select(a => a.DashboardTileID).ToList();

            allDashBoardTiles.ForEach(a => a.IsChecked = list.Contains(a.ID));

现在在上面的查询中,当我使用 group 子句并选择是否使用 a.ID、a.Name 等时,它说它不包含它的定义或扩展方法。

表格

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    您不能直接访问a 的属性,因为GroupBy 返回IGrouping&lt;TKey,T&gt;。您也可以在您的组中包含其他列,并像这样访问它们:-

     (from a in context.DashboardTiles
     group a by new { a.CategoryID, a.ID, a.Name } into b 
     select new BusinessObjects.DashboardTileBO
            {
                ID = b.Key.ID,
                Name = b.Key.Name,
                DashboardTiles = b.ToList(),
            }).ToList();
    

    编辑:

    另外,我猜DashboardTileBO 类中的属性DashboardTiles 应该是List&lt;DashboardTile&gt; 而不是List&lt;DashboardTileBO&gt;,否则我们无法从 DashboardTiles 数据中获取它。

    【讨论】:

    • 谢谢,是的,现在我可以访问它了,但现在它说无法将 int 列表转换为仪表板tilebo 列表如何在此处获取我的子类别列表
    • @rupinder18 - 它必须给出错误Cannot convert from list of dashboardtile to list of dashboardtilebo 而不是整数列表。请检查我的更新我猜你的财产应该包括DashboardTile而不是DashboardTileBO
    猜你喜欢
    • 2015-02-16
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    相关资源
    最近更新 更多