как получить общее количество 2-го / 3-го внутреннего списка объекта, используя Linq или лямбда-выражение в c# - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть такая структура классов

class ABC
{
    public List<A> LA { get; set; }
}
class A
{
    public List<B> LB { get; set; }
}

class B 
{
    public List<C> LC { get; set; }
}

class C
{
    public int x { get; set; }
    public int y { get; set; }
    public int z { get; set; }
}

Здесь, как вы можете видеть, класс "ab c" может иметь несколько объектов / элементов класса "A" и каждый элемент класса " A может иметь несколько элементов класса «B», и каждый элемент класса «B» может иметь несколько элементов класса «C». Теперь я хочу вычислить общее количество элементов класса "C" и сохранить это общее количество в переменной типа int с помощью выражения Linq или лямбда-выражения и без foreach l oop.

Ответы [ 2 ]

3 голосов
/ 12 февраля 2020

Вы можете суммировать их в каждом списке.

abc.LA.Sum(xabc => xabc.LB.Sum(xb => xb.LC.Count))

Вот пример того, как вы можете это сделать.

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    class ABC
    {
        public List<A> LA { get; set; }
    }

    class A
    {
        public List<B> LB { get; set; }
    }

    class B
    {
        public List<C> LC { get; set; }
    }

    class C
    {
        public int x { get; set; }
        public int y { get; set; }
        public int z { get; set; }
    }


    public static void Main()
    {

        var abc = new ABC 
        { 
            LA = new List<A> 
            { 
                new A 
                { 
                    LB = new List<B> 
                    { 
                        new B 
                        { 
                            LC = new List<C> 
                            { 
                                new C { x =1, y= 2, z= 3}, 
                                new C { x =1, y= 2, z= 3} 
                            } 
                        },
                        new B 
                        { 
                            LC = new List<C> 
                            { 
                                new C { x =1, y= 2, z= 3}, 
                                new C { x =1, y= 2, z= 3} 
                            } 
                        } 

                    } 
                },
                new A 
                { 
                    LB = new List<B> 
                    { 
                        new B 
                        { 
                            LC = new List<C> 
                            { 
                                new C { x =1, y= 2, z= 3}, 
                                new C { x =1, y= 2, z= 3} 
                            } 
                        },
                        new B 
                        { 
                            LC = new List<C> 
                            { 
                                new C { x =1, y= 2, z= 3}, 
                                new C { x =1, y= 2, z= 3} 
                            } 
                        } 

                    } 
                } 

            } 
        };

        Console.WriteLine(abc.LA.Sum(xabc => xabc.LB.Sum(xb => xb.LC.Count)));

    }
}
0 голосов
/ 15 февраля 2020

ab c .LA.SelectMany (la => la.LB) .SelectMany (lb => lb.L C). Count ();

...