查找值是否在数据表的两列之间

本文关键字:两列 之间 是否 数据表 查找 | 更新日期: 2023-09-27 18:16:36

在过去的一周里,我一直在寻找这个问题的答案,但我似乎找不到答案。

我写了一个程序来运行我玩的在线游戏的抽奖。我遇到的问题是,我需要从主要奖品的抽奖中删除重复的奖品(新要求)。

我现在拥有的数据库被加载到一个数据表中,然后我生成一个随机数,然后我需要找到这个随机数落在数据表TicketNumberStartTicketNumberEnd两列之间的位置。这是我现在使用的LINQ。

var winner = from jnkDt in dt.AsEnumerable()
    where
    jnkDt.Field<int>("TicketNumberStart") > rndNumber &&
    jnkDt.Field<int>("TicketNumberEnd") < rndNumber
    select new
    {
        name = jnkDt.Field<string>("BuyerName")
    };
    foreach (var jnk in winner)
        tmpName = jnk.name.ToString();

我遇到的问题是,无论rndNumber是什么,这都会返回一个空白字符串。

查找值是否在数据表的两列之间

我假设TicketNumberEnd 大于 TicketNumberStart,在这种情况下,您的条件将永远不会为真。我怀疑你需要翻转比较:

var winner = from jnkDt in dt.AsEnumerable()
    where
    jnkDt.Field<int>("TicketNumberStart") <= rndNumber &&
    jnkDt.Field<int>("TicketNumberEnd") >= rndNumber
....

var winner = from jnkDt in dt.AsEnumerable()
    where
    rndNumber >= jnkDt.Field<int>("TicketNumberStart") &&
    rndNumber <= jnkDt.Field<int>("TicketNumberEnd")