首页 > 解决方案 > 有没有一种通过 linq 自行分解列表的好方法

问题描述

我正在寻找一种方法来分解包含组和用户的列表。问题是一个组可能是仅由用户、其他组甚至两者兼而有之的结果。如果一个组已经在列表中(并且全部应该是),我想加入用户。目标应该是没有子组的列表,并且所有组都应该只包含用户。

例如:有一个名为“所有员工”的组,由具有用户的子组组成。我需要“所有员工”组中的所有用户而不是子组。我已经尝试过类似下面的代码。有一个更好的方法吗?因为我的代码不会解散所有子组。

foreach (var g in Usergroup)
{
    if (g.groups != null)
    {
        foreach (var t in g.groups)
        {
            foreach (var z in Usergroup)
            {
                if (z.Name == t.Name)
                {
                    if (g.Users != null && z.Users != null)
                    {

                        UserMapping[] tmp = new UserMapping[g.Users.Length + z.Users.Length];

                        g.Users.CopyTo(tmp, 0);
                        z.Users.CopyTo(tmp, g.Users.Length);

                        g.Users = tmp.GroupBy(p => p.Name).Select(grp => grp.First()).ToArray();
                    }
                }

            }

        }

    }
}

internal class GroupUserClassMapping
{
    public string Name { get; set; }
    public UserMapping[] Users { get; set; }
    public GroupsMapping[] groups { get; set; }
}

非常感谢!

问候牙医

标签: c#listlinqobjectjoin

解决方案


推荐阅读