好,我称为Mamamia一个对象,并在它的内部有一些串的属性。我创建此对象的列表,并与150项填充它。

我试图用List.FindAll但我reaaally不知道该怎么做。我已经试过这样:

produto = products.FindAll(delegate(Mamamia cv) {return cv.LocalPackage.Remove(1,21) == cmbPackage.SelectedValue};

我不知道为什么委托是存在的,我只是试图从其他一些代码复制在互联网上。

提前感谢!

有帮助吗?

解决方案

委托在那里看到你正在测试的值是否是你在找什么。到Remove调用看起来令人担忧的是像它的变异,虽然价值 - 这是很少一件好事,当你正在寻找通过名单。我想,如果它是一个字符串,那么它是不是太糟糕了,虽然它可能不是你以后...

什么是所涉及的类型,以及你在找什么?哦,您使用C#3和/或.NET 3.5?这将使其更容易(甚至C#3针对.NET 2.0意味着你可以使用lambda表达式代替匿名方法的)。

当你运行此刻的代码发生了什么事?如果它只是没有找到任何东西,它的可以的仅仅是因为你参考相等性测试(如果SelectedValue回报object)。

尝试这种情况:

produto = products.FindAll(delegate(Mamamia cv) {
    return cv.LocalPackage.Remove(1,21).Equals(cmbPackage.SelectedValue);
});

编辑:

这听起来像你只想要一个单一的值,如果你使用.NET 3.5会比较习惯首先使用LINQ。我会使用:

string selectedText = (string) cmbPackage.SelectedValue;
Mamamia item = products.FirstOrDefault
                  (cv => cv.LocalPackage.Remove(1,21) == selectedText);
if (item != null)
{
    // Found it; otherwise item will be null
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top