Arrays NET Linq。关于SelectMany的困惑

Arrays NET Linq。关于SelectMany的困惑,arrays,list,select,linq,Arrays,List,Select,Linq,在给定的代码示例中,为什么要使用x.ToArray()? 每个元素x都已经是一个数组了,不是吗 请让我不那么困惑:) var array1=newint[3]{1,2,3}//新整数数组 var array2=新的int[3]{4,5,6}//新整数数组 var array3=新的int[3]{7,8,9}//新整数数组 IList list4=新列表{array1,array2,array3}; var theManyList=list4.SelectMany(x=>x.ToArray()).

在给定的代码示例中,为什么要使用x.ToArray()? 每个元素x都已经是一个数组了,不是吗

请让我不那么困惑:)

var array1=newint[3]{1,2,3}//新整数数组
var array2=新的int[3]{4,5,6}//新整数数组
var array3=新的int[3]{7,8,9}//新整数数组
IList list4=新列表{array1,array2,array3};
var theManyList=list4.SelectMany(x=>x.ToArray()).ToList();

您不需要它。您只需执行以下操作:

list4.SelectMany(x => x).ToList();

原因正如您所说的,数组已经是数组了。SelectMany接受一个
IEnumerable
,因此无需添加额外的操作。我不知道为什么有人会在一个例子中这样做。也许他们想让你明白你必须通过IEnumerable?

是对的。SelectMany使用的是
IEnumerable
,因此用x来表示数组是没有意义的,即使它不是数组,只是一个“IEnumerable”。然而,有时在Linq语句中使用
.ToArray()
,以防止执行延迟。@achitaka san-关于防止延迟执行的调用很好,我没有想到这种情况。大多数情况下,当我在做任何LINQ时,我希望延迟执行
list4.SelectMany(x => x).ToList();