C# 返回List集合中所有符合某些条件的元素在List集合中的索引
时间: 2024-10-25 19:17:34 浏览: 100
在C#中,如果你想要获取一个`List<T>`集合中所有符合条件的元素的索引,可以使用LINQ查询结合`Where`和`Select`方法。假设你要查找某个属性值满足特定条件的元素,可以这样做:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
public class MyClass {
public int Value { get; set; }
}
class Program {
static void Main(string[] args) {
List<MyClass> myList = new List<MyClass>();
// 假设这里填充了你的数据
var matchingIndexes = myList
.Where(item => item.Value > 10) // 指定你的条件,这里是Value大于10
.Select((item, index) => index) // 选择每个匹配项的索引
.ToList(); // 转换为列表形式以便查看
foreach (var index in matchingIndexes) {
Console.WriteLine($"元素值大于10的索引: {index}");
}
相关问题
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);
}
//
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`不是有序的,你需要先找到对应元素再删除。
阅读全文