Как мне сделать следующее, используя оператор Lambda или Linq? - PullRequest
1 голос
/ 27 мая 2011

У меня есть эта функция, которую нужно преобразовать в лямбда-оператор:

public int someFunction()
{
    int pCount = 0;
    foreach (Top top in Tops)
    {
        foreach (P p in top.TopPs)
        {
            pCount++;
        }
    }
    return pCount;
}

Добавлена ​​дополнительная ясность:

Tops и top.TopP расширяет ObservableCollection

Howя делаю это?

Ответы [ 7 ]

8 голосов
/ 27 мая 2011
int count = Tops.Sum(top => top.TopPs.Count());
5 голосов
/ 27 мая 2011

Вы имеете в виду запрос LINQ?

int count = Tops.SelectMany(x => x.TopPs).Count();
2 голосов
/ 27 мая 2011

Использование оператора LINQ для суммирования для подсчета вложенной коллекции:

Tops.Sum(t=>t.TopPs.Count());
1 голос
/ 27 мая 2011

Вот альтернативный метод:

    int pCount = (from t in Tops
                  from p in t.TopPs
                  select p).Count();
1 голос
/ 27 мая 2011

Примерно так:

var pCount = Tops.Sum(t=>t.TopPs.Count());
0 голосов
/ 27 мая 2011

Вот, пожалуйста.

var cnt = Tops.Select<Top, int>(q => q.TopPs.Count()).Sum();

понял?

0 голосов
/ 27 мая 2011

Вы можете просто использовать Count () для этого, и он доступен как метод расширения.

Например:

Tops.Count();
...