在过去的一周里,我一直在寻找这个问题的答案,而我似乎无法找到答案。
我已经编写了一个程序来为我玩的在线游戏进行抽奖活动。我遇到的问题是我需要从主要奖品的图纸中删除重复项(新要求)。
我现在拥有的数据库被加载到DataTable然后我生成一个随机数,然后我需要找到随机数落在DataTable中两列之间的位置TicketNumberStart
和TicketNumberEnd
。以下是我现在用于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是什么,都会返回一个空字符串。
答案 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")