我如何将List <t>转换为List <i>,其中T实现接口I?

时间:2019-04-03 18:12:06

标签: c#

将T List<T>转换为List<I>的最佳方法是什么?类型T实现接口I?

看来我无法进行这样的显式转换:

List<T> myListOfT;
List<I> myListOfI = (List<I>)myListOfT

;

1 个答案:

答案 0 :(得分:1)

一种选择是使用Linq $arr = [["id" => 1, "title" => "aaa", "children" => []], ["id" => 2, "title" => "bbb", "children" => [["id" => 3, "title" => "ccc", "children" => []]]]]; function modifyTitle(&$arr, $id, $newVal) { foreach($arr as &$e) { if ($e["id"] == $id) $e["title"] = $newVal; modifyTitle($e["children"], $id, $newVal); } } modifyTitle($arr, 3, "zzz"); print_r($arr); // now the original array children changed 。它将第一个集合的元素强制转换为您想要的类型。

https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.cast?view=netframework-4.7.2

IEnumerable<TResult> Cast<TResult>(this IEnumerable source)