1

我有一个列表,其中包含。

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

现在我想知道字符串在哪个索引处包含 house(1.) 如何在没有 for 循环的情况下做到这一点?Array.IndexOf 将不起作用,因为它不会找到具有相同匹配的元素

4

7 回答 7

4

找到第一个索引:

var idx = myList.FindIndex(x => x.Contains("abc"));
于 2013-09-04T09:29:53.300 回答
1
var indexes = Enumerable.Range(0, list.Length)
                        .Where(index => list[index].Contains("1."));
于 2013-09-04T09:28:43.623 回答
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搜索与指定谓词定义的条件匹配的元素,并返回列表中第一次出现的从零开始的索引或其一部分。

于 2013-09-04T09:30:34.457 回答
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"));
于 2013-09-04T09:50:12.180 回答
0
string key = "house";
var result = yourlist.Select((x,y)=>new{ListIndex = y, ElementIndex = x.IndexOf(key)})
          .Where(x=>x.ElementIndex > -1)
          .ToList();

使用此代码,您将获得一个匿名类型的集合,该集合具有 2 个属性:第一个具有列表索引,第二个具有字符串内的索引

于 2013-09-04T09:26:16.270 回答
0
int index = Array.FindIndex(list.ToArray(), i => i.Contains("house") );
于 2013-09-04T09:27:02.553 回答
0
myList.FindIndex(x => x.ToLower().Contains("house"))

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

于 2013-09-04T10:04:54.363 回答