C# Linq从列表中的多个列表中选择值
我有一个列表,其中包含C# Linq从列表中的多个列表中选择值,c#,linq,C#,Linq,我有一个列表,其中包含IntPtr这样的变量 var testList = new List<List<IntPtr>>(); 我到底做错了什么?如何修改此语句以使其按预期工作?当前,您正在向SelectMany传递一个谓词,这不是它所期望的;相反,它期望的是一个Func,其中List是输入列表,IEnumerable是函数调用时返回的值 SelectMany然后将每个嵌套的IEnumerable折叠成一个IEnumerable 除此之外,您还尝试使用=运算符,该序列由
IntPtr
这样的变量
var testList = new List<List<IntPtr>>();
我到底做错了什么?如何修改此语句以使其按预期工作?当前,您正在向
SelectMany
传递一个谓词,这不是它所期望的;相反,它期望的是一个Func
,其中List
是输入列表,IEnumerable
是函数调用时返回的值
SelectMany
然后将每个嵌套的IEnumerable
折叠成一个IEnumerable
除此之外,您还尝试使用=序列(列表
)上的code>运算符,该序列由指针
表示,该指针不起作用
相反,您应该首先通过SelectMany
折叠嵌套序列,然后通过Where
子句应用谓词:
var pointers = testList.Where(list => list.Count > 0) // IEnumerable<List<IntPtr>>
.SelectMany(list => list) // IEnumerable<IntPtr>
.Where(pointer => pointer != IntPtr.Zero); // IEnumerable<IntPtr>
var pointers = testList.Where(list => list.Count > 0) // IEnumerable<List<IntPtr>>
.SelectMany(list => list) // IEnumerable<IntPtr>
.Where(pointer => pointer != IntPtr.Zero); // IEnumerable<IntPtr>
var pointers = testList.SelectMany(list => list) // IEnumerable<IntPtr>
.Where(pointer => pointer != IntPtr.Zero); // IEnumerable<IntPtr>