我有一个List,其中包含。
1. This is house.
2. I am writing with pen.
现在我想知道字符串包含house(1。)的索引 没有for循环怎么做? Array.IndexOf将无法工作,因为它找不到具有相同匹配的元素
答案 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"))
如果您想以不区分大小写的方式进行搜索,那么这就是解决方案。