0

UserControl私は私が作成したカスタムを持っています

public class MyObject : UserControl
{
    public MyObject()
    {

    }
    public bool IsFinished { get; set; }
}

Lets say 10(will be dynamic)MyObjectを StackPanel に追加し、他のすべての項目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);
    }
}

これで、次を追加して、探している答えを得ることができます (5)

int FinishedItems = 0;
foreach (object o in panel.Children)
{
    if (o.GetType() == typeof(MyObject))
    {
        if (((MyObject)o).IsFinished)
        {
            FinishedItems++;
        }
    }
}

2 つの質問:

A.もっと雄弁な方法はありますか? 多分Linq私はまだそれを使用する方法を学んでいます。私が理解していることから、それがLINQが技術的に行うことです。

B. LINQ について間違っていますか?

4

2 に答える 2

2

したがって、完成したアイテムを数えたいとします:

int FinishedItems = panel.Children.OfType<MyObject>()
                         .Count(mo => mo.IsFinished);
于 2012-07-27T22:24:27.083 に答える
2

あなたは試すことができます:

int FinishedItems = panel.Children.OfType<MyObject>().Where(mo=>mo.IsFinished).Count();
于 2012-07-27T22:24:37.347 に答える