我有下表记录了酒店中的特定房间(由三个字符代码[dlx,sup,jac等等]指定)在特定DATETIME
上售罄的情况。
CREATE TABLE [dbo].[RoomSoldOut](
[SoldOutID] [int] IDENTITY(1,1) NOT NULL,
[RoomType] [nchar](3) NOT NULL,
[SoldOutDate] [datetime] NOT NULL,
CONSTRAINT [PK_RoomSoldOut5] PRIMARY KEY CLUSTERED
我需要知道整个酒店的特定日期何时售罄。有8种房型,如果所有8种房间都已售罄,那么酒店当晚的预订将非常实用。
LINQ声明计算在给定夜晚出售的房型是这样的。
var solds = from r in RoomSoldOuts
group r by r.SoldOutDate into s
select new
{
Date = s.Key,
RoomTypeSoldOut = s.Count()
};
从这个LINQ语句我可以得到所有已售罄的DATETIME
的列表,其中COUNT个已售罄的房间数量。
我需要将此列表仅过滤到DATETIME
= 8的COUNT
,因为那时酒店已售罄。
这应该很简单,但我无法弄清楚如何在LINQ
中做到这一点答案 0 :(得分:4)
我认为您需要在查询中添加以下内容:where s.Count()==8
答案 1 :(得分:4)
您也可以尝试
var solds = (from r in RoomSoldOuts
group r by r.SoldOutDate into s
select new
{
Date = s.Key,
RoomTypeSoldOut = s.Count()
}).Where(x => x.RoomTypeSoldOut == 8);
然后你也可以缩短它只选择日期
var solds = from r in RoomSoldOuts
group r by r.SoldOutDate into s
where s.Count() == 8
select s.Key;