【问题标题】:Convert sql to Lambda expression将 sql 转换为 Lambda 表达式
【发布时间】:2013-09-01 00:47:17
【问题描述】:

伙计们,我需要一个用于此 sql 语句的 Lambda 表达式。

select GalleryId, Max(Bid)
from BidModels
where GalleryId in (select GalleryId from BidModels where UserId = (UserId))
group by GalleryId

【问题讨论】:

  • userid = userid 是无操作(始终为真)。您是否打算将其中之一作为输入参数?
  • Sorry yes userid is variable 应该是 UserId = some parr?
  • 你确定你的意思是 lambda 还是 LINQToSQL?

标签: sql linq asp.net-mvc-4 razor lambda


【解决方案1】:

我不明白您为什么需要子查询,因为您可以选择传入 UserId = userid 的所有投标。请记住:

var userid = <whatever>;

var query = from b in BidModels
            where b.UserId = userid
            group by b.GalleryId into g
            select new {Id = g.Key, MaxBid = g.Max(x => x.Bid)};

【讨论】:

  • 我正在尝试查询数据库以获取特定于与所有用户的出价相关的用户的出价。换句话说,我希望单个投标人知道他的投标与他的同一组产品的其他投标相关。
【解决方案2】:

你可以这样做

var galleryIds = (bidModelses.Where(b => b.UserId == [YOURPARAMETER])
                 .Select(b => b.GalleryId));

var query = (bidModelses.Where(bm => galleryIds.Contains(bm.GalleryId))
            .GroupBy(bm => bm.GalleryId)
            .Select(gbm => new {gbm.Key, MaxBid = gbm.Max(p => p.BidId)}));

【讨论】:

    【解决方案3】:

    这似乎是答案感谢您的帮助:

    from b in BidModels
    let  MyGallery = from a in BidModels where a.UserId == (1) select new { a.GalleryId }
    where MyGallery.Any()
    group b.Bid by b.GalleryId into g
    select new 
     { Id     = g.Key, 
       MaxBid = g.Max()
     } 
    

    【讨论】:

      猜你喜欢
      • 2017-09-25
      • 1970-01-01
      • 2012-06-14
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      相关资源
      最近更新 更多