如何在c#中从列表中选择元素时排除整数范围
本文关键字:元素 排除 范围 整数 选择 列表 | 更新日期: 2023-09-27 18:11:08
我目前正在编写一个应用程序,可以提取一定数量的航班记录。下面的代码运行正常:
foreach (var rec in record
.Skip(GetFlightIndex())
.Take((int)AppDefaults.NumFlights))
现在,我想排除航班号在特定范围内的航班记录(例如包机等)。由于某种原因,此代码无法工作。有什么想法吗?
foreach(var rec in records
.Skip(GetFlightIndex())
.Take((int)AppDefaults.NumFlights)
.Where( i =>
Int32.Parse(i.FLIGHTNO) < 700 && Int32.Parse(i.FLIGHTNO) > 799 &&
Int32.Parse(i.FLIGHTNO) < 900 && Int32.Parse(i.FLIGHTNO) > 999 &&
Int32.Parse(i.FLIGHTNO) < 1900 && Int32.Parse(i.FLIGHTNO) > 1999 &&
Int32.Parse(i.FLIGHTNO) < 8000 && Int32.Parse(i.FLIGHTNO) > 9799 &&
Int32.Parse(i.FLIGHTNO) < 9900 && Int32.Parse(i.FLIGHTNO) > 9999 ))
where子句中的逻辑不太正确。以下内容不可能是真的:
Int32.Parse(i.FLIGHTNO) < 700 && Int32.Parse(i.FLIGHTNO) > 799
你的意思可能是:
Int32.Parse(i.FLIGHTNO) > 700 && Int32.Parse(i.FLIGHTNO) < 799
另外,一个数字不能在700-799 和 900-999之间。因此,您需要在每个范围之间使用OR。
Int32.Parse((i.FLIGHTNO) > 700 && Int32.Parse(i.FLIGHTNO) < 799) ||
Int32.Parse((i.FLIGHTNO) > 900 && Int32.Parse(i.FLIGHTNO) < 999) ||
Int32.Parse((i.FLIGHTNO) > 1900 && Int32.Parse(i.FLIGHTNO) < 1999) ||
Int32.Parse((i.FLIGHTNO) > 8000 && Int32.Parse(i.FLIGHTNO) < 9799) ||
Int32.Parse((i.FLIGHTNO) > 9900 && Int32.Parse(i.FLIGHTNO) < 9999)
最后,您可能想要进行过滤,然后获取页面的数据,而不是像您所做的那样——获取页面数据然后进行过滤。要改变这种情况,将Where()
移动到Skip()