我的理解是,如果我想获取列表中项目的ID,我可以这样做:
private static void a()
{
List<string> list = new List<string> {"Box", "Gate", "Car"};
Predicate<string> predicate = new Predicate<string>(getBoxId);
int boxId = list.FindIndex(predicate);
}
private static bool getBoxId(string item)
{
return (item == "box");
}
但是,如果我想让比较动态怎么办?所以我没有检查item ==“box”,而是想将用户输入的字符串传递给委托,并检查item == searchString。
答案 0 :(得分:18)
通过匿名方法或lambda使用编译器生成的闭包是在谓词表达式中使用自定义值的好方法。
private static void findMyString(string str)
{
List<string> list = new List<string> {"Box", "Gate", "Car"};
int boxId = list.FindIndex(s => s == str);
}
如果您使用的是.NET 2.0(没有lambda),这也可以使用:
private static void findMyString(string str)
{
List<string> list = new List<string> {"Box", "Gate", "Car"};
int boxId = list.FindIndex(delegate (string s) { return s == str; });
}
答案 1 :(得分:2)
你可以做到
string item = "Car";
...
int itemId = list.FindIndex(a=>a == item);
答案 2 :(得分:1)
string toLookFor = passedInString;
int boxId = list.FindIndex(new Predicate((s) => (s == toLookFor)));
答案 3 :(得分:0)
GenerateImage