使用c#中的列表按特定搜索词获取索引

Ker*_*ryL 0 c#

我有一个列表如下:

Cat, Green, 10
Cat, Green, 1
Dog, Red, 4
Cat, Blue, 2
Run Code Online (Sandbox Code Playgroud)

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

我想得到上面列表中包含cat和10或包含cat和2的所有元素的所有索引值.所以基本上我应该从列表中的查询返回索引值0和3.任何人都可以告诉我如何做到这一点?

Jon*_*eet 8

听起来像你想要的:

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);
Run Code Online (Sandbox Code Playgroud)

(假设元素具有您显示的第一列和第三列的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);
Run Code Online (Sandbox Code Playgroud)

或者,将列表解析成更开心的东西......

  • @KerryL:如果你从一开始就说清楚就好了. (2认同)