如何在List <t> </t>中找到未定义字符串的索引

时间:2009-06-12 04:23:16

标签: c# list delegates predicate

我的理解是,如果我想获取列表中项目的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。

4 个答案:

答案 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