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

时间:2015-10-07 19:28:11

标签: c# linq

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

我已经编写了一个程序来为我玩的在线游戏进行抽奖活动。我遇到的问题是我需要从主要奖品的图纸中删除重复项(新要求)。

我现在拥有的数据库被加载到DataTable然后我生成一个随机数,然后我需要找到随机数落在DataTable中两列之间的位置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是什么,都会返回一个空字符串。

1 个答案:

答案 0 :(得分:2)

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

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

OR

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