C# linq 如何获取嵌套动态列表的所有第一个元素?

C# linq how to get all the first elements of a nested dynamic list?

我有一个二维嵌套列表 List<list<dynamic>>,我想获取每个二级列表的第一个元素并形成一个新的 List<dynamic>

我知道 .first() 获取列表的第一个元素,但如何将它应用于多个子列表?

提前致谢。

如果你想取每个列表的前两个元素,请试试这个,你想要的元素越多,你可以增加 .Take() 中的整数。

List<List<string>> originalList = new List<List<string>>()
{
    new List<string>(){"1","1","1"},
    new List<string>(){"2","2"},    
};    

    var FirtTwoElementsList = originalList.Select(x => x.Take(2)).ToList();
    List<string> FinalList = new List<string>();
    foreach (var item in FirtTwoElementsList)
    {
       FinalList.AddRange(item.ToList<string>());
    }

正确有效的方法如下:

mainList.Select(subList => subList?.First()).OfType<dynamic>();

这将处理 null 个列表和 null 个元素

如果你想select子列表的所有元素尝试以下

mainlist.Select(subList => subList).OfType<List<dynamic>>();

这只会处理 null 个列表

IEnumerable s = listOfLists.Where(列表 => lists.Any()) .Select(数组=> array.First());

解释:

  1. 首先使用lists => lists.Any()

    获取有记录的数组列表
  2. 然后 select 每个列表中的第一项和 return。