C# 如何在列表中查找未定义字符串的索引<;T>;
我的理解是,如果我想获取列表中某个项目的ID,我可以这样做:C# 如何在列表中查找未定义字符串的索引<;T>;,c#,list,delegates,predicate,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(predic
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");
}
private static void a()
{
列表=新列表{“框”、“门”、“车”};
谓词谓词=新谓词(getBoxId);
int-boxId=list.FindIndex(谓词);
}
私有静态bool getBoxId(字符串项)
{
返回(项目=“框”);
}
但是如果我想让比较变得动态呢?因此,我不想检查item==“box”,而是想向委托传递一个用户输入的字符串,并检查item==searchString。使用编译器通过匿名方法或lambda生成的闭包是在谓词表达式中使用自定义值的好方法
private static void findMyString(string str)
{
List<string> list = new List<string> {"Box", "Gate", "Car"};
int boxId = list.FindIndex(s => s == str);
}
私有静态void findMyString(字符串str)
{
列表=新列表{“框”、“门”、“车”};
intboxid=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; });
}
私有静态void findMyString(字符串str)
{
列表=新列表{“框”、“门”、“车”};
int-boxId=list.FindIndex(委托(字符串s){return s==str;});
}
你可以这样做
string item = "Car";
...
int itemId = list.FindIndex(a=>a == item);
列表列表=新列表(“盒子”、“门”、“车”);
字符串SearchStr=“Box”;
int-BoxId=0;
foreach(字符串搜索列表中的字符串)
{
if(str==SearchString)
{
BoxId=list.IndexOf(str);
打破
}
}
美丽的伴侣,谢谢!期待着我的3.0升级,这样我就可以使用那些lambdas了。
string item = "Car";
...
int itemId = list.FindIndex(a=>a == item);
List <string> list= new List<string>("Box", "Gate", "Car");
string SearchStr ="Box";
int BoxId= 0;
foreach (string SearchString in list)
{
if (str == SearchString)
{
BoxId= list.IndexOf(str);
break;
}
}