首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在IGrouping中创建IGrouping

在IGrouping中创建IGrouping
EN

Stack Overflow用户
提问于 2021-05-28 10:41:00
回答 1查看 119关注 0票数 0

我有一个平面List ViewModels

代码语言:javascript
复制
var initialList = new List<ViewModel>
{
    new ViewModel { OuterCaption = "A outer", InnerCaption = "A inner", Caption = "E", Id = 8},
    new ViewModel { OuterCaption = "B outer", InnerCaption = "B inner", Caption = "A", Id = 5},
    new ViewModel { OuterCaption = "A outer", InnerCaption = "B inner", Caption = "A", Id = 12},
    new ViewModel { OuterCaption = "B outer", InnerCaption = "B inner", Caption = "B", Id = 9},
    new ViewModel { OuterCaption = "A outer", InnerCaption = "B inner", Caption = "B", Id = 23},
    new ViewModel { OuterCaption = "B outer", InnerCaption = "C inner", Caption = "A", Id = 10},
    new ViewModel { OuterCaption = "A outer", InnerCaption = "B inner", Caption = "C", Id = 16},
    new ViewModel { OuterCaption = "A outer", InnerCaption = "A inner", Caption = "C", Id = 4},
    new ViewModel { OuterCaption = "A outer", InnerCaption = "A inner", Caption = "D", Id = 7},
    new ViewModel { OuterCaption = "C outer", InnerCaption = "A inner", Caption = "A", Id = 31},
    new ViewModel { OuterCaption = "B outer", InnerCaption = "A inner", Caption = "A", Id = 19},
    new ViewModel { OuterCaption = "B outer", InnerCaption = "A inner", Caption = "B", Id = 20},
    new ViewModel { OuterCaption = "A outer", InnerCaption = "A inner", Caption = "A", Id = 1},
    new ViewModel { OuterCaption = "A outer", InnerCaption = "A inner", Caption = "B", Id = 3}
}.OrderBy(vm => vm.OuterCaption).ThenBy(vm => vm.InnerCaption).ThenBy(vm => vm.Caption);

其中每个ViewModel如下所示。

代码语言:javascript
复制
class ViewModel
{
    public string OuterCaption { get; set; }
    public string InnerCaption { get; set; }
    public string Caption { get; set; }
    public int Id { get; set; }

}

现在,我想将ListOuterCaption分组,稍后再按InnerCaption分组。我可以这样将ListOuterCaption分组。

代码语言:javascript
复制
var list = initialList.GroupBy(vm => vm.OuterCaption).ToList();

然后像这样在我的View中使用它,在我的View中使用GroupBy

代码语言:javascript
复制
foreach (var outerGrouping in list)
{
    Console.WriteLine(outerGrouping.Key);
    Console.WriteLine("~~~~~~~~~~~~~~~~~~");

    foreach (var innerGrouping in outerGrouping.GroupBy(vm => vm.InnerCaption))
    {
        Console.WriteLine(innerGrouping.Key);

        foreach (var vm in innerGrouping)
        {
            Console.WriteLine("Caption: " + vm.Caption + " Id:" + vm.Id);
        }

        Console.WriteLine("------------------");
    }

    Console.WriteLine("~~~~~~~~~~~~~~~~~~");
}

但是我想在一个IGrouping中创建一个IGrouping,而不是在IGrouping中使用GroupBy (或Linq)。我确实认为我应该为我的View创建类似于View的东西(可能是错误的)。如何使用我的initialList实现这一点,以便从Linq中删除Linq

下面是示例代码:https://dotnetfiddle.net/hP2kxO

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-28 11:31:53

这很管用。这不是我要找的东西,但它将Linq从我的View中移除。

代码语言:javascript
复制
var list = initialList
    .GroupBy(vm => (vm.OuterCaption, ViewModel: vm))
    .GroupBy(group => group.Key.ViewModel.InnerCaption)
    .ToList();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67737395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档