我有一个列表,其中包含。
1. This is house.
2. I am writing with pen.
现在我想知道字符串在哪个索引处包含 house(1.) 如何在没有 for 循环的情况下做到这一点?Array.IndexOf 将不起作用,因为它不会找到具有相同匹配的元素
找到第一个索引:
var idx = myList.FindIndex(x => x.Contains("abc"));
var indexes = Enumerable.Range(0, list.Length)
.Where(index => list[index].Contains("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搜索与指定谓词定义的条件匹配的元素,并返回列表中第一次出现的从零开始的索引或其一部分。
干净简单
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"));
string key = "house";
var result = yourlist.Select((x,y)=>new{ListIndex = y, ElementIndex = x.IndexOf(key)})
.Where(x=>x.ElementIndex > -1)
.ToList();
使用此代码,您将获得一个匿名类型的集合,该集合具有 2 个属性:第一个具有列表索引,第二个具有字符串内的索引
int index = Array.FindIndex(list.ToArray(), i => i.Contains("house") );
myList.FindIndex(x => x.ToLower().Contains("house"))
如果您想以不区分大小写的方式进行搜索,这就是解决方案。