C# 获取StackPanel中具有特定条件的项目计数';孩子们

C# 获取StackPanel中具有特定条件的项目计数';孩子们,c#,wpf,linq,C#,Wpf,Linq,我创建了一个自定义的UserControl public class MyObject : UserControl { public MyObject() { } public bool IsFinished { get; set; } } 我在StackPanel中添加了10个(将是动态的)MyObject,我将IsFinished设置为true private void DoSomething() { StackPanel panel = new

我创建了一个自定义的
UserControl

public class MyObject : UserControl
{
    public MyObject()
    {

    }
    public bool IsFinished { get; set; }
}
我在StackPanel中添加了10个(将是动态的)
MyObject
,我将
IsFinished
设置为true

private void DoSomething()
{
    StackPanel panel = new StackPanel();
    for (int i = 0; i <= 10; i++)
    {
        int rem = 0;
        Math.DivRem(i, 2, out rem);
        MyObject newObj = new MyObject();
        if (rem == 0)
        {
            newObj.IsFinished = true;
        }
        panel.Children.Add(newObj);
    }
}
2个问题:

有没有更雄辩的方法?也许有了
Linq
我还在学习如何使用它。据我所知,LINQ技术上就是这么做的


B.我对LINQ的看法是否错误?

所以您要计算成品:

int FinishedItems = panel.Children.OfType<MyObject>()
                         .Count(mo => mo.IsFinished);
int FinishedItems=panel.Children.OfType()
.Count(mo=>mo.IsFinished);

所以您要计算完成的项目:

int FinishedItems = panel.Children.OfType<MyObject>()
                         .Count(mo => mo.IsFinished);
int FinishedItems=panel.Children.OfType()
.Count(mo=>mo.IsFinished);
您可以尝试:

int FinishedItems = panel.Children.OfType<MyObject>().Where(mo=>mo.IsFinished).Count();
int FinishedItems=panel.Children.OfType().Where(mo=>mo.IsFinished.Count();
您可以尝试:

int FinishedItems = panel.Children.OfType<MyObject>().Where(mo=>mo.IsFinished).Count();
int FinishedItems=panel.Children.OfType().Where(mo=>mo.IsFinished.Count();

这就是问题所在。我已经在这个问题上绞尽脑汁太久了,实际上我只是偶然发现了这个类型,并在玩这个确切的代码。非常感谢。关于第二个问题,只是为了知识。LINQ基本上只是做一个循环来得到答案吗?这就是问题所在。我已经在这个问题上绞尽脑汁太久了,实际上我只是偶然发现了这个类型,并在玩这个确切的代码。非常感谢。关于第二个问题,只是为了知识。LINQ基本上只是做一个循环来得到答案吗?