C#如何使用Linq解析Object []以查找所有List <Int>对象?

Han*_*ans 3 c# linq arrays parsing object

在C#中使用Linq,如何查询Object[](data)以便它返回List<int>数组中的所有对象并将它们展平为单个List<int>

这是我试过的,但由于某种原因它不起作用:

List<int> IntData;

IntData = data.Where(n => n.GetType().IsGenericType)
              .Where(n => n.GetType().GetGenericTypeDefinition() == typeof(List<int>))
              .Select(n => (List<int>) n)
              .SelectMany( n => n));
Run Code Online (Sandbox Code Playgroud)

D S*_*ley 5

您可以使用Linq的OfType方法执行此操作:

List<int> IntData = data.OfType<List<int>>()
                        .SelectMany(i => i)
                        .ToList();
Run Code Online (Sandbox Code Playgroud)

你甚至可以让它更通用来接受任何 IEnumerable<int>:

List<int> IntData = data.OfType<IEnumerable<int>>()
                        .SelectMany(i => i)
                        .ToList();
Run Code Online (Sandbox Code Playgroud)

  • @varocarbas我认为你误解了源列表包含的内容. (2认同)