我正在使用C#和.NET Framework 4.6.1开发WPF.
我正在使用以下代码行:
codesRead.IndexOf(string.Format("{0} OK", lastCode));
codesRead是私有的只读ObservableCollection< string>.
当我使用这些字符串“ code1 OK”时,它工作得很好.
现在,我用“ code1 OK-23.0005 ms”更改了这些字符串,现在它始终返回-1.
如何找到以“ code1 OK”开头的字符串的索引?
解决方法:
您可以使用Find子句获取元素,然后使用IndexOf搜索它.这是一个小的控制台应用程序来说明这一点:
List<string> asd = new List<string>
{ "code5 OK - 234", "code2 OK - 234", "code1 OK - 234", "code4 FAIL - 234" };
int index = asd.IndexOf(asd.Find(x => x.StartsWith("code1")));
Console.WriteLine(index);
如果该元素不存在,它将返回-1
编辑:对不起,我的阅读表述显然不够准确.
如果您使用的是ObservableCollection,则建议您使用FirstOrDefault搜索该项目.这是一个结果为负的示例:
ObservableCollection<string> qwe = new ObservableCollection<string>()
{ "code5 OK - 234", "code2 OK - 234", "code7 OK - 234" };
int index = qwe.IndexOf(qwe.FirstOrDefault(x => x.StartsWith("code1")));
Console.WriteLine(index);