自定义对象列表中的Linq和lambda函数

本文关键字:lambda 函数 Linq 对象 列表 自定义 | 更新日期: 2023-09-27 18:18:41

我过去用这种方式检索在达到特定条件之前跳过的项数:

List<double> series1X = new List<double> {4,6,8,9,10 };
List<double> series1Y = new List<double> { 10, 20, 15, 70,5 };
List<double> series2X = new List<double> { 1,2,3,6,7,8.1,8.2,8.3,8.4,9,9.75};
int j=0;
j = series2X.TakeWhile(p => p < series1X[0]).Count();

所以j是series2X中与series1X中第一个项相邻的项的索引。

现在我把它改写成具有X, Y属性的DataPoint。我也试过这样做,但我无法访问X或y

在本例中

List<DataPoint> series1 = new  List<DataPoint>();
List<DataPoint> series2 = new  List<DataPoint>();

如何做到这一点?由于

自定义对象列表中的Linq和lambda函数

我不完全理解你的问题,但我认为你在寻找类似;

j = series2X.TakeWhile(p => p.X < series1[0].X && p.Y < series1[0].Y).Count();'

在LINQ to Objects中,你可以像在c#中其他地方一样使用点表示法访问属性。p是类型为DataPointseries2中的当前项目,series1中的每个项目也是如此,因此您可以对任何类型的任何属性执行p.MyProperty