通过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。有人能教我怎么做吗?
听起来像你想要的:
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.Contains
、string.StartsWith
&string.EndsWith
或Regex来测试当前项目是否是您要查找的。效率不是特别高,但写起来相当容易。