【问题标题】:Select from two tables using "NOT IN" in LINQ in Entity Framework在实体框架的 LINQ 中使用“NOT IN”从两个表中进行选择
【发布时间】:2012-05-05 00:24:53
【问题描述】:

我有以下 SQL,我如何在 LINQ 中实现它,我在我的 MVC 项目中使用实体框架。

  SELECT 
  * FROM Catalog.ServiceItem 
  WHERE SKU NOT IN (SELECT ServiceItemSKU FROM Catalog.TaggedServiceItems)

有什么想法吗?

编辑: 答案:

var untaggedItems = from item in serviceItems where !taggedServiceItems.Contains(item.SKU) select item;

【问题讨论】:

    标签: linq entity-framework linq-to-sql entity-framework-4


    【解决方案1】:

    你可以用Contains做这样的事情:

    var result = from item in ServiceItem
        where !TaggedServiceItems.Contains(item.SKU)
        select item;
    

    【讨论】:

      【解决方案2】:

      试试这个

      var Catalog_ServiceItem = ds.Tables["Catalog.ServiceItem"].AsEnumerable();
      var Catalog_TaggedServiceItems = ds.Tables["Catalog.TaggedServiceItems"].AsEnumerable();
      var _except = from c in Catalog_ServiceItem 
                         join b in Catalog_TaggedServiceItems 
                           on c.Field<string>("ServiceItemSKU ") equals b.Field<string>("ServiceItemSKU ") into j
                         from x in j.DefaultIfEmpty()
                         where x == null
                         select c;
      

      编辑

      你可以这样做

      var _except = Catalog_ServiceItem.Except(Catalog_TaggedServiceItems);
      

      【讨论】:

      • 我喜欢使用 EXCEPT,它只有一行,让代码整洁干净。谢谢!!
      【解决方案3】:

      使用 lambda。

      dim query=Catalog.ServiceItem.where(function(q) not q.Contains(q.SKU))
      

      【讨论】:

        【解决方案4】:

        试试这个:

        var untaggedItems = 
          from i in Catalog.ServiceItem
          let taggedItems = (
            from ti = Catalog.TaggedServiceItems
            select ti.ServiceItemSKU ).Distinct()
          where ! taggedItems.Contains( i.SKU )
          select i;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多