代码之家  ›  专栏  ›  技术社区  ›  Bobby Borszich

需要在linq中选择count=int的位置

  •  0
  • Bobby Borszich  · 技术社区  · 16 年前

    我有下表记录了酒店中某个特定房间(由三个字符的代码[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语句计算给定夜晚售出的RoomTypes的工作方式如下。

    var solds = from r in RoomSoldOuts
       group r by r.SoldOutDate into s   
       select new
       {
          Date = s.Key,  
          RoomTypeSoldOut = s.Count() 
       };
    

    从这个Linq声明中,我可以得到所有售完商品的清单。 日期时间 有一个房间被卖光了。

    我只需要把这个列表过滤到那些 日期时间 在哪里 COUNT =8,因为那一天旅馆就卖光了。

    这应该很简单,但我不知道如何在LINQ中实现它

    2 回复  |  直到 16 年前
        1
  •  4
  •   Konamiman    16 年前

    我认为您需要在查询中添加以下内容: where s.Count()==8

        2
  •  4
  •   Adriaan Stander    16 年前

    你也可以试试

    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;