Linq to EF,我正在使用asp.net 4,EF 4和C#。
我提出了两种查询数据的方法。方式A和C工作正常。但是B需要实现和附加的WHERE语句(如“c.ModeContent ==”NA“)。
我的问题是:
感谢您的时间! : - )
// A
var queryContents = from c in context.CmsContents
where c.ModeContent == "NA" &&
!(from o in context.CmsContentsAssignedToes select o.ContentId)
.Contains(c.ContentId)
select c;
// B - I need to implent where c.ModeContent == "NA"
var result01 = from c in context.CmsContents
join d in context.CmsContentsAssignedToes on c.ContentId equals d.ContentId into g
where !g.Any()
select c;
// C
var result02 = context.CmsContents.Where(x => x.ModeContent == "NA").Where(item1 => context.CmsContentsAssignedToes.All(item2 => item1.ContentId != item2.ContentId));
答案 0 :(得分:3)
关于查询B,您可以应用以下条件:
var result01 = from c in context.CmsContents where c.ModeContent == "NA"
join d in context.CmsContentsAssignedToes on c.ContentId equals d.ContentId into g
where !g.Any()
select c;
答案 1 :(得分:3)
如果您use your association properties instead of join
var result = from c in context.CmsContents
where c.ModeContent == "NA"
&& !c.AssignedToes.Any()
select c;
我猜测CmsContent
到CmsContentsAssignedToes
的导航名为AssignedToes
。如果它实际上被称为其他内容,请更改我的查询中的名称。
此查询可以大声读出,您知道完全意味着什么。您需要考虑的join
版本。