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基本上只是做一个循环来得到答案吗?