委托人在那里查看您测试的值是否是您要查找的值。对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
}
我使用.NET 3.5,当我运行代码,我得到的错误: 无法隐式转换类型“System.Collections.Generic.List '到'FindMSIProducts.Mamamia 我正在寻找一个Mamamia对象列表中的propertie –
2009-09-18 14:27:16
@Felipe:您的'produto'变量的类型是'List'还是仅仅是'Mamamia'本身?如果你只是想返回一个单一的项目,然后使用'Find'方法而不是'FindAll'。如果您期望返回多个项目,则将'produto'的类型更改为'List '。 –
LukeH
2009-09-18 14:44:47
produto是一个Mamamia对象和产品是一个列表这个列表可以有重复的项目,我想返回所有这些 –
2009-09-18 17:03:44