获取索引 包含<object>值的列表,C#,Linq



我从C#Linq开始。我想执行此查询。

我得到了一个对象列表每个对象有几个值,其中一个是";文本";。我想寻找哪个对象有一个特定的文本,他们为列表获取对象的索引。

获取索引未完成

var List = GetListObject();
var index = unitList.Select(x => x.Text.ToString().Contains("Text"));

检查此

myLİst.Select((v, i) => new {Text = v, Index = i})
.First(x=> x.Text.ToString().Contains("Text")).Index;

如果您想获得索引,我建议使用好的旧for循环:

int index = -1;
for (int i = 0; i < List.Count; ++i)
if (List[i].Text.Contains("Text")) {
index = i;
break;
}

Linq的情况下

int index = List
.Select((v, i) => new {v, i})
.FirstOrDefault(pair => pair.v.Text.Contains("Text"))
?.i ?? -1;  

在这两种情况下,如果没有找到具有Text == "Text"的项目,我们得到-1

您可以使用Enumerable。范围(int,int(。

例如:var zeroIndexes = Enumerable.Range(0, list.Count - 1).Where(x => list[x] == 0).ToArray()将为您提供一个列表中所有索引的数组,其中值等于零。

具体到你的问题,你可以做:

int index = Enumerable.Range(0, unitList.Count - 1).Where(x => unitList[x].Text.ToString().Contains("Text")).FirstOrDefault();

这将为您提供第一个索引,如果找不到,则为0。

最新更新