我有一个事件注册页面,其中radiobuttonlist填充了事件日期,例如1月1日,2月1日,3月1日等。一旦有10个人注册了某个日期,我想禁用radiobuttonlist上的选项,以便它不能再被选中。
我是LINQ to SQL的新手,并且从直接SQL转换出一些问题。
我有一个带有EventID和EventDateID的表事件。 数据看起来像
EventID | EventDateID
1 | 1
2 | 1
3 | 1
4 | 3
5 | 3
6 | 5
我有以下SQL返回我正在查找的内容,EventID和eventDateID的出现次数。
SELECT eventDateID, COUNT(eventDateID) AS COUNT
FROM EVENTS
GROUP BY eventDateID
Output:
EventID | EventDateID
1 | 3
3 | 2
5 | 1
到目前为止,这是我提出的LINQ:
DataClassesDataContext db = new DataClassesDataContext();
var query = db.Events
.GroupBy(ev => new
{
ev.EventDateID
})
.Select(g => new
{
g.Key.EventDateID,
attendeeCount = g.Count()
});
g.Key.EventID为我提供了我正在寻找的ID,并且参与者计数给了我一个计数,我只是不确定从这里到哪里去
现在,我被困住了。
我想做一个简单的
foreach (var i in query)
{
//check the count
//do the other stuff
}
...但我不确定如何将包含count的第一个LINQ查询中的信息与foreach循环集成。
(如果这是一种完全愚蠢的方式,我100%愿意接受建议)。
感谢。
编辑以反映@ AjaySingh的回答。
DataClassesDataContext db = new DataClassesDataContext();
var query = from ev in db.Events
group ev by ev.EventDateID into grp
select new
{
EventDateID = grp.Key,
Count = grp.Count(),
IsFull = grp.Count() >= 10
};
foreach (var i in query)
{
if (i.IsFull)
{
rdoDates.Items.FindByValue(i.EventDateID.ToString()).Text += " - Full";
rdoDates.Items.FindByValue(i.EventDateID.ToString()).Enabled = false;
}
}
答案 0 :(得分:1)
我认为你走在正确的轨道上,但是为了拥有更可读的查询以及拥有可以帮助您决定显示或隐藏哪些单选按钮的bool,您可以尝试类似于linq的内容:
var query = from ev in db.Events
group ev by ev.EventDateID into grp
select new
{
EventDateID = grp.Key,
Count = grp.Count(),
IsFull = grp.Count() >= 10
};