首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C#中从列表中选择元素时,如何排除整数范围?

在C#中从列表中选择元素时,如何排除整数范围?
EN

Stack Overflow用户
提问于 2014-07-02 00:47:46
回答 1查看 53关注 0票数 0

我目前正在编写一个应用程序,可以获取一定数量的飞行记录。以下代码运行正常:

代码语言:javascript
运行
复制
        foreach (var rec in record
            .Skip(GetFlightIndex())
            .Take((int)AppDefaults.NumFlights))

现在,我想不包括在一定范围内的飞行记录(即包机飞行等)。由于某些原因,此代码不起作用。对为什么会这样有什么想法吗?

代码语言:javascript
运行
复制
        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 ))
EN

Stack Overflow用户

回答已采纳

发布于 2014-07-02 00:59:09

where子句中的逻辑不太正确。下列情况永远不可能是真的:

代码语言:javascript
运行
复制
Int32.Parse(i.FLIGHTNO) < 700 && Int32.Parse(i.FLIGHTNO) > 799

你可能是说:

代码语言:javascript
运行
复制
Int32.Parse(i.FLIGHTNO) > 700 && Int32.Parse(i.FLIGHTNO) < 799

此外,一个数字永远不可能是700-799 900-999之间。所以你会希望在每个范围之间有一个OR。

代码语言:javascript
运行
复制
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()

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24521307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档