如何从列表<string>中查找元素的索引,元素包含特定部分</string>

时间:2013-09-04 09:24:21

标签: c# .net

我有一个List,其中包含。

1. This is house.
2. I am writing with pen.

现在我想知道字符串包含house(1。)的索引 没有for循环怎么做? Array.IndexOf将无法工作,因为它找不到具有相同匹配的元素

7 个答案:

答案 0 :(得分:4)

找到第一个索引:

var idx = myList.FindIndex(x => x.Contains("abc"));

答案 1 :(得分:1)

var indexes = Enumerable.Range(0, list.Length)
                        .Where(index => list[index].Contains("1."));

答案 2 :(得分:1)

优雅的方法是使用FindIndex

List<String> exampleList = new List<String>();
exampleList.Add("This is a house.");
exampleList.Add("I am writing with pen");

int index = exampleList.FindIndex(x => x.Contains("house"));
Console.WriteLine(index); //0

index = exampleList.FindIndex(x => x.Contains("pen"));
Console.WriteLine(index); //1
  

FindIndex 搜索与定义条件匹配的元素   通过指定的谓词,并返回从零开始的索引   列表中的第一次出现或其中的一部分。

答案 3 :(得分:1)

干净简单

string[] data = { "This is house", "I am writing with pen." };
List<string> list = new List<string>(data);

int index = list.FindIndex(str => str.Contains("house"));

答案 4 :(得分:0)

string key = "house";
var result = yourlist.Select((x,y)=>new{ListIndex = y, ElementIndex = x.IndexOf(key)})
          .Where(x=>x.ElementIndex > -1)
          .ToList();

使用此代码,您将获得一个Anonymous类型的集合,其中包含2个属性:第一个具有列表索引,第二个具有索引在字符串中

答案 5 :(得分:0)

int index = Array.FindIndex(list.ToArray(), i => i.Contains("house") );

答案 6 :(得分:0)

myList.FindIndex(x => x.ToLower().Contains("house"))

如果您想以不区分大小写的方式进行搜索,那么这就是解决方案。