C#找出在list中的索引
时间: 2023-11-13 20:05:15 浏览: 406
在 C# 中,你可以使用 `IndexOf` 方法来找出列表中元素的索引。以下是一个示例:
```csharp
List<int> numbers = new List<int> { 10, 20, 30, 40, 50 };
int index = numbers.IndexOf(30);
Console.WriteLine("索引为:" + index);
```
以上代码中,我们创建了一个名为 `numbers` 的整数列表,并使用 `IndexOf` 方法查找元素 `30` 的索引。最后,我们将索引打印到控制台上。
输出结果将是:
```
索引为:2
```
注意:如果元素不存在于列表中,`IndexOf` 方法将返回 `-1`。
相关问题
C#winform如何查找list中全部满足条件元素的索引,并且根据索引删除list中元素和另一个list中元素
在C# WinForms中,如果你有一个List<T>类型的列表,并想要找到所有满足特定条件的元素及其索引,然后同时从两个列表中删除它们,你可以这样做:
首先,创建一个辅助函数,用于找出满足条件的索引并返回一个元组集合,包含元素值和其索引:
```csharp
public static List<(T Element, int Index)> FindIndexes(List<T> list, Func<T, bool> condition)
{
var indexes = new List<(T, int)>();
for (int i = 0; i < list.Count; i++)
{
if (condition(list[i]))
indexes.Add((list[i], i));
}
return indexes;
}
```
接下来,定义你的条件函数,例如检查元素是否等于某个值:
```csharp
private static bool IsElementToRemove(T element, T targetToRemove)
{
// 检查元素是否等于targetToRemove
return EqualityComparer<T>.Default.Equals(element, targetToRemove);
}
```
然后,在主程序里,可以这样操作:
```csharp
List<T> mainList = ...; // 主要列表
List<T> otherList = ...; // 另一个列表
var matchingElements = FindIndexes(mainList, item => IsElementToRemove(item, someValueFromOtherList));
foreach ((T element, int index) in matchingElements)
{
mainList.RemoveAt(index); // 从mainList中删除
otherList.RemoveAt(IndexOf(otherList, element)); // 如果otherList存在对应的元素,也删除
}
// 查找删除元素的索引,这里假设otherList按索引顺序排列
private int IndexOf(List<T> list, T item)
{
return list.IndexOf(item);
}
```
注意,如果`otherList`不是有序的,你需要先找到对应元素再删除。
C# 返回List集合中所有符合某些条件的元素的索引
在C#中,如果你想从`List<T>`集合中找到所有符合特定条件的元素并获取它们的索引,可以使用`LINQ`(Language Integrated Query)查询。下面是一个例子,假设我们有一个学生列表,需要找出所有年龄大于18岁的学生的索引:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
class Student
{
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<Student> students = new List<Student>
{
new Student { Age = 20 },
new Student { Age = 17 },
new Student { Age = 21 },
new Student { Age = 15 }
};
var indexes = students.Where(s => s.Age > 18).Select((s, i) => i).ToList();
Console.WriteLine("Indexes of students older than 18:");
foreach (int index in indexes)
{
Console.WriteLine(index);
}
//
阅读全文