c#-查找以以下内容开头的字符串的索引

我正在使用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);
上一篇:CodeGo.net>在GroupBy和Sum聚合的ObservableCollection上使用LINQ


下一篇:c# – 在ObservableCollection中识别和替换对象的最有效方法是什么?