【问题标题】:How do I write SELECT FROM myTable WHERE id IN (SELECT...) in Linq?如何在 Linq 中编写 SELECT FROM myTable WHERE id IN (SELECT...)?
【发布时间】:2010-09-07 22:05:41
【问题描述】:

你如何在 Linq 中重写这个?

SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)

所以用简单的英语,我想从 TableA 中选择 Id 和 Name,其中 TableA 的 Id 在第二个查询的结果集中。

【问题讨论】:

    标签: sql linq linq-to-sql


    【解决方案1】:
    from a in TableA 
    where (from b in TableB 
           join c in TableC on b.id equals c.id
           where .. select b.id)
    .Contains(a.Id) 
    select new { a.Id, a.Name }
    

    【讨论】:

      【解决方案2】:

      LINQ 支持包含形式的 IN。想想“collection.Contains(id)”而不是“id IN (collection)”。

      from a in TableA
      where (
          from b in TableB
          join c in TableC
              on b.id equals c.id
          select b.id
      ).Contains(TableA.Id)
      select new { a.Id, a.Name }
      

      另请参阅此博客post

      【讨论】:

        【解决方案3】:

        LINQ 中没有对 IN 的开箱即用支持。您需要加入 2 个查询。

        【讨论】:

          猜你喜欢
          • 2018-10-23
          • 2012-12-11
          • 1970-01-01
          • 2017-09-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-06
          • 1970-01-01
          相关资源
          最近更新 更多