C# 我如何在表上执行EF查询以仅在出现';没有指向子表的链接吗?
我有以下两门课:C# 我如何在表上执行EF查询以仅在出现';没有指向子表的链接吗?,c#,entity-framework,C#,Entity Framework,我有以下两门课: public class Word { public System.Guid WordId { get; set; } // WordId (Primary key) public string Name { get; set; } // Name (length: 20) // Reverse navigation public virtual System.Collections.Generic.ICollection<WordFor
public class Word
{
public System.Guid WordId { get; set; } // WordId (Primary key)
public string Name { get; set; } // Name (length: 20)
// Reverse navigation
public virtual System.Collections.Generic.ICollection<WordForm> WordForms { get; set; } // WordForm.FK_WordFormWord
}
public class WordForm
{
public System.Guid WordFormId { get; set; } // WordFormId (Primary key)
public System.Guid WordId { get; set; } // WordId
public string Definition { get; set; } // Definition (length: 500)
// Foreign keys
public virtual Word Word { get; set; } // FK_WordFormWord
}
有人能告诉我如何修改此代码以满足我的要求吗?子查询应该可以:
var words = db.Words
.Where(w=> !db.WordForms.Any(z=> z.WordId == w.WordId))
.AsNoTracking()
.ToList();
子查询应该可以工作:
var words = db.Words
.Where(w=> !db.WordForms.Any(z=> z.WordId == w.WordId))
.AsNoTracking()
.ToList();
您可以很容易地获得
单词
,它没有单词表单
,如下所示:
var words = db.Words
.Where(W => W.WordForms.Count == 0)
.ToList();
您可以很容易地获得
单词
,它没有单词表单
,如下所示:
var words = db.Words
.Where(W => W.WordForms.Count == 0)
.ToList();
另一个选项是使用左连接
var words = (from w in db.Words
join wf in db.WordForms
on w.WordId equals wf.WordId into wwf
from x in wwf.DefaultIfEmpty()
where x == null
select w)
.AsNoTracking()
.ToList();
另一个选项是使用左连接
var words = (from w in db.Words
join wf in db.WordForms
on w.WordId equals wf.WordId into wwf
from x in wwf.DefaultIfEmpty()
where x == null
select w)
.AsNoTracking()
.ToList();
这段代码可以工作,不需要在任何语句中过滤
var words = db.Words.Where(e => !e.WordForms.Any())
.AsNoTracking()
.ToList();
这段代码可以工作,不需要在任何语句中过滤
var words = db.Words.Where(e => !e.WordForms.Any())
.AsNoTracking()
.ToList();