通过c#中的列表按特定搜索项获取索引

本文关键字:搜索 获取 索引 列表 通过 | 更新日期: 2023-09-27 18:00:37

我有一个列表如下:

Cat, Green, 10
Cat, Green, 1
Dog, Red, 4
Cat, Blue, 2

每个项目只是列表中一个逗号分隔的字符串元素。

我想得到上面列表中包含cat和10或包含cat和2的所有元素的所有索引值。因此,基本上我应该得到从列表上的查询返回的索引值0和3。有人能教我怎么做吗?

通过c#中的列表按特定搜索项获取索引

听起来像你想要的:

var query = list.Select((item, index) => new { item, index })
                .Where(pair => pair.item.Name == "Cat" && 
                               (pair.item.Value == 10 || pair.item.Value == 2))
                .Select(pair => pair.index);

(这是假设元素在您显示的第一列和第三列中具有Name和Value属性。)

编辑:好吧,如果你只是在处理字符串,你可以使用:

var query = list.Select((item, index) => new { item, index })
                .Where(pair => pair.item.StartsWith("Cat,") &&
                               (pair.item.EndsWith(", 10") || 
                                pair.item.EndsWith(", 2"))
                .Select(pair => pair.index);

或者,将列表解析为一开始更愉快的内容。。。

一种方法是循环遍历列表并使用string.Containsstring.StartsWith&string.EndsWith或Regex来测试当前项目是否是您要查找的。效率不是特别高,但写起来相当容易。