C# 列表索引搜索

C# 列表索引搜索,c#,C#,我有一个单子 List<string> xmlValue = new List<string>(); List xmlValue=new List() {“英语”、“西班牙语”、“法语”、“印地语”、“英语”、“英语”}; 字符串搜索=“英语”; int[]result=xmlValue.Select((b,i)=>b.Equals(搜索)?i:-1) .Where(i=>i!=-1).ToArray(); List xmlValue=new List() {“英语”、

我有一个单子

List<string> xmlValue = new List<string>();
List xmlValue=new List()
{“英语”、“西班牙语”、“法语”、“印地语”、“英语”、“英语”};
字符串搜索=“英语”;
int[]result=xmlValue.Select((b,i)=>b.Equals(搜索)?i:-1)
.Where(i=>i!=-1).ToArray();
List xmlValue=new List()
{“英语”、“西班牙语”、“法语”、“印地语”、“英语”、“英语”};
字符串搜索=“英语”;
int[]result=xmlValue.Select((b,i)=>b.Equals(搜索)?i:-1)
.Where(i=>i!=-1).ToArray();

在这种情况下,我选择不使用LINQ扩展方法,而是使用“老式”循环:

string search=“English”;
var foundindex=新列表(xmlValue.Count);
for(int i=0;i

在我看来,这样更容易阅读;而且,
foundindex
列表从不保存任何不需要的值。

在这种情况下,我会选择不使用LINQ扩展方法,并使用“老式”循环:

string search=“English”;
var foundindex=新列表(xmlValue.Count);
for(int i=0;i

在我看来,这样更容易阅读;而且,
foundindex
列表从不保存任何不需要的值。

您希望将索引存储在哪里?在
int
变量
index
中,一次只能存储一个索引。要将索引存储在何处?在
int
变量
index
中,一次只能存储一个索引。谢谢Nikhil,这是一个快速的回答。@MahmoudGamal:我不确定他是否只需要前两个索引。请注意,他在整个问题中没有使用单一复数形式,即使在需要使用复数形式的地方也是如此。因此,我猜测他正在寻找以下所有项目的指数,而不仅仅是下一个项目。谢谢Nikhil,这是一个快速的回答。@MahmoudGamal:我不确定他是否只想要前两个指数。请注意,他在整个问题中没有使用单一复数形式,即使在需要使用复数形式的地方也是如此。因此,我猜他是在寻找以下所有项目的指数,而不仅仅是下一个项目。@Reniuz:那是口味问题。这个循环清楚地显示了正在查找的内容和添加的内容,而对于labmda表达式,必须执行一些带有无效索引的技巧,这些索引后来会被过滤掉。更短并不总是更好:-)@Christophert:创建一个包含大量项目的列表,并在其上运行两个解决方案,同时测量时间,并可能提供出发点。@Reniuz:那就看味道了。这个循环清楚地显示了正在查找的内容和添加的内容,而对于labmda表达式,必须执行一些带有无效索引的技巧,这些索引后来会被过滤掉。更短并不总是更好:-)@Christophert:创建一个包含大量项目的列表,并在其上运行两个解决方案,同时测量时间,并可能提供起点。
    string search = "English";
    int index = xmlValue.Select((item, i) => new { Item = item, Index = i })
    .First(x => x.Item == search).Index;
List<string> xmlValue = new List<string>() 
                 {"English", "Spanish", "French", "Hindi", "English", "English"};

string search = "English";

int[] result = xmlValue.Select((b, i) => b.Equals(search) ? i : -1)
                       .Where(i => i != -1).ToArray();
string search = "English";

var foundIndices = new List<int>(xmlValue.Count);
for (int i = 0; i < xmlValue.Count; i++) {
    if (xmlValue[i] == search) {
        foundIndices.Add(i);
    }
}