我有以下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;
答案 0 :(得分:8)
您可以使用Contains
执行此类操作:
var result = from item in ServiceItem
where !TaggedServiceItems.Contains(item.SKU)
select item;
答案 1 :(得分:1)
试试这个
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);
答案 2 :(得分:0)
使用lambda。
dim query=Catalog.ServiceItem.where(function(q) not q.Contains(q.SKU))
答案 3 :(得分:-1)
试试这个:
var untaggedItems =
from i in Catalog.ServiceItem
let taggedItems = (
from ti = Catalog.TaggedServiceItems
select ti.ServiceItemSKU ).Distinct()
where ! taggedItems.Contains( i.SKU )
select i;