我来简单的问个小问题,大家来看看!!!!!

堆代码的爱因斯坦 2018-01-03 04:48:40
假如数据库有系统已经维护好的多个年龄段 (表设计了年龄上限和年龄下限字段,都是整形)
18--29
30-49
50-79
现在用户输入了(下限)18--72(上限),应该得出上面三个年龄段
我现在的写法是
拿用户输入的下限与系统年龄段的上下限比较,
用户输入下限>=系统下限 and 用户输入下限<=系统上限 或者
用户输入上限>=系统下限 and 用户输入上限<=系统上限
这样可以得出第一个和第三个年龄段
如果要得出30-49这个段,我用的
for(i=30;i<=49;i++)
{
for(j=18;j<=72;j++)
{if(i=j){此段符合!}}
}
有别的思路吗?
...全文
354 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2018-01-05
  • 打赏
  • 举报
回复
数据库一般不应该存年龄, 而是存生日。 难道你今年计算好的东西, 明年就不用了?
早起晚睡 2018-01-05
  • 打赏
  • 举报
回复
引用 5 楼 xinbada1985 的回复:
你们应该是想复杂了!其实我们可以设定为用户输入的为标准,查出年龄大于用户输入下限18的或者年龄小于用户输入的上限72的年龄段都去取出来就可以了!这样三个年龄的数据都能出来了。 SELECT * FROM 年龄表 WHERE 年龄表.年龄下限 >= 用户输入下限(18) or 年龄表.年龄上限<= 用户输入上限(72)
这个最直接明了
正怒月神 2018-01-04
  • 打赏
  • 举报
回复
我这里用linq写了,反正翻译成sql也是一样简单。。。。
static void Main(string[] args)
        {
            //年龄分段
            List<RoundAge> rList = new List<RoundAge>()
            {
                new RoundAge(){Begin=18,End=29},
                new RoundAge(){Begin=30,End=49},
                new RoundAge(){Begin=50,End=79},
            };
            
            //用户输入
            var input = new RoundAge() { Begin = 18, End = 80 };
            var q = rList.Where(x => input.Begin >= x.Begin || input.End <= x.End).ToList();

            foreach (var item in q)
            {
                Console.WriteLine(string.Format("所属年龄段:{0}---{1}",item.Begin,item.End));
            }

            Console.ReadLine();
        }

        public class RoundAge
        {
            public int Begin { get; set; }
            public int End { get; set; }
        }
mirrorspace 2018-01-04
  • 打赏
  • 举报
回复
到底要解决什么问题呢? 根据输入的年龄求年龄段? 根据年龄段找出所有年龄?
xinbada1985 2018-01-04
  • 打赏
  • 举报
回复
如果不在SQL里面解决用for循环的话 for(数据集 in list <数据集>) { if(数据集.年龄下限 >= 用户输入下限(18) || 数据集.年龄上限<= 用户输入上限(72) ) { 此条数据符合 } }
xinbada1985 2018-01-04
  • 打赏
  • 举报
回复
你们应该是想复杂了!其实我们可以设定为用户输入的为标准,查出年龄大于用户输入下限18的或者年龄小于用户输入的上限72的年龄段都去取出来就可以了!这样三个年龄的数据都能出来了。 SELECT * FROM 年龄表 WHERE 年龄表.年龄下限 >= 用户输入下限(18) or 年龄表.年龄上限<= 用户输入上限(72)
  • 打赏
  • 举报
回复

  SELECT * FROM dbo.TestAge WHERE 
  (18 BETWEEN BeginAge AND EndAge) 
  OR (72 BETWEEN BeginAge AND EndAge) 
  OR (BeginAge BETWEEN 18 AND 72) 
  OR (EndAge BETWEEN  18 AND 72)
xuzuning 2018-01-03
  • 打赏
  • 举报
回复
糊涂了吧?你应该遍历整个集合,找到满足 左值 大于等于 用户下限 与 右值 小于等于 用户上限的 所有记录
qq_31835601 2018-01-03
  • 打赏
  • 举报
回复
用户输入下限>=系统下限 and 用户输入下限<=系统上限 或者 用户输入上限>=系统下限 and 用户输入上限<=系统上限 或者 用户输入下线<=系统下线 and 用书输入上限>=系统上线

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧