如何使用Lambda或Linq语句执行以下操作?

时间:2011-05-27 01:27:35

标签: c# linq lambda expression

我有这个需要转换为lambda语句的函数:

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

添加了更多清晰度:

Tops和top.TopPs扩展了ObservableCollection

我该怎么做?

7 个答案:

答案 0 :(得分:8)

int count = Tops.Sum(top => top.TopPs.Count());

答案 1 :(得分:5)

您的意思是LINQ查询吗?

int count = Tops.SelectMany(x => x.TopPs).Count();

答案 2 :(得分:2)

使用sum LINQ运算符而不是嵌套集合的计数:

Tops.Sum(t=>t.TopPs.Count());

答案 3 :(得分:1)

这样的事情:

var pCount = Tops.Sum(t=>t.TopPs.Count());

答案 4 :(得分:1)

这是另一种方法:

    int pCount = (from t in Tops
                  from p in t.TopPs
                  select p).Count();

答案 5 :(得分:0)

你走了。

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

得到了吗?

答案 6 :(得分:-1)

你可以简单地使用Count(),它可以作为扩展方法使用。

例如:

Tops.Count();