我创建了一个自定义UserControl
public class MyObject : UserControl
{
public MyObject()
{
}
public bool IsFinished { get; set; }
}
我添加了10个(将是动态的)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个问题:
一个。有更有说服力的方式吗?也许Linq
我还在学习如何使用它。据我所知,这就是LINQ技术上的作用。
B中。我错了LINQ吗?
答案 0 :(得分:2)
所以你想要计算成品:
int FinishedItems = panel.Children.OfType<MyObject>()
.Count(mo => mo.IsFinished);
答案 1 :(得分:2)
您可以尝试:
int FinishedItems = panel.Children.OfType<MyObject>().Where(mo=>mo.IsFinished).Count();