使用linq表达式 对数组每个对象的类型改变并返回
时间: 2024-04-12 19:28:28 浏览: 15
如果你想使用LINQ表达式对数组中的每个对象的类型进行改变并返回一个新的数组,你可以使用`Enumerable.Cast`方法。以下是一个示例:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
public class BaseClass
{
public void BaseMethod()
{
Console.WriteLine("Base Method");
}
}
public class DerivedClass : BaseClass
{
public void DerivedMethod()
{
Console.WriteLine("Derived Method");
}
}
public class Program
{
public static void Main(string[] args)
{
List<BaseClass> baseList = new List<BaseClass>
{
new BaseClass(),
new DerivedClass(),
new DerivedClass()
};
// 使用LINQ表达式对数组中的每个对象的类型进行改变并返回新的数组
List<DerivedClass> derivedList = baseList.Cast<DerivedClass>().ToList();
// 调用新数组中的方法
foreach (DerivedClass derivedObj in derivedList)
{
derivedObj.DerivedMethod();
}
}
}
```
在上面的示例中,我们定义了一个基类`BaseClass`和一个派生类`DerivedClass`。然后,我们创建了一个基类对象的列表`baseList`,其中包含了基类对象和派生类对象。使用LINQ表达式`Cast<DerivedClass>()`我们可以将基类对象列表转换为派生类对象列表,并使用`ToList()`方法将结果转换为新的列表`derivedList`。最后,我们遍历`derivedList`中的每个对象,并调用其特有的方法`DerivedMethod()`。
运行上述代码,将会输出:
```
Derived Method
Derived Method
```
这表明我们成功地使用LINQ表达式对数组中的每个对象的类型进行了改变,并且可以调用新数组中对象的特有方法。请注意,使用`Cast`方法转换类型时,需要确保原始对象实际上是目标类型或者可以隐式转换为目标类型,否则会引发`InvalidCastException`异常。