代表在那里查看您正在测试的值是否是您正在寻找的值。令人担忧的是,调用 toRemove
看起来像是在改变值 - 当您查看列表时,这很少是一件好事。我想如果它是一个字符串那么它还不错,虽然它可能不是你所追求的......
涉及哪些类型,您在寻找什么?哦,您使用的是 C# 3 和/或 .NET 3.5?这将使它更容易(即使是针对 .NET 2.0 的 C#3 也意味着您可以使用 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
}