【问题标题】:How to group by the records to a list of category items如何按记录分组到类别项目列表
【发布时间】:2021-12-28 04:36:02
【问题描述】:

我从我的存储过程中得到了一条记录,并将数据绑定到AppCategoryDataModel

现在,我想迭代该数据并创建一个 List<CategoryData> 列表,将 DetailId、Title 和 Description 添加为列表,按 AppCategoryId 分组

public class AppCategoryDataModel
{
    public Nullable<int> AppCategoryId { get; set; }
    public string AppCategoryName { get; set; }
    public Nullable<int> DetailId { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public Nullable<bool> IsShow { get; set; }
}

我尝试过的:

 var res = db.Database.SqlQuery<AppCategoryDataModel>($"call getAppCategoryData({memberId}, {unitId}, {taxId})")
                    .Select(z => new FirstLevelCategory
                    {
                        AppCategoryId = z.AppCategoryId.GetValueOrDefault(),
                        AppCategoryName = z.AppCategoryName,
                        IsShow = z.IsShow,
                        CategoryData = ??
                    }).ToList();

FirstLevelCategory属性是:

public class FirstLevelCategory
{
    public int AppCategoryId { get; set; }
    public string AppCategoryName { get; set; }
    public bool? IsShow { get; set; }
    public IEnumerable<Details>CategoryData { get; set; }   
}

如何使用 LINQ 而不是使用 group by 子句来做到这一点?

【问题讨论】:

  • 为什么不想使用 Group by?
  • 有很多字段可供选择,使用 group by 我认为它会创建更复杂的查询。
  • 首先让它工作,然后在必要时优化。也不要低估查询提供者的翻译能力
  • GroupBy by AppCategoryId, AppCategoryName, IsShow,就是你需要的。
  • 你能举个例子吗? @SvyatoslavDanyliv

标签: c# linq


【解决方案1】:

你可以通过分组来做到这一点,分组是正确的方式

var res = db.Database.SqlQuery<AppCategoryDataModel>($"call getAppCategoryData({memberId}, {unitId}, {taxId})")
    .GroupBy(x => new { AppCategoryId, AppCategoryName, IsShow })
    .Select(z => new FirstLevelCategory
    {
        AppCategoryId = z.Key.AppCategoryId,
        AppCategoryName = z.Key.AppCategoryName,
        IsShow = z.Key.IsShow,
        CategoryData = z.Select(x => new Detail 
        [
            DetailId = x.DetailId,
            Title = x.Title,
            Description = x.Description
        ])
        .ToList()
    }).ToList();

【讨论】:

    猜你喜欢
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2023-04-02
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    相关资源
    最近更新 更多