我有一个表,该表包含具有相关表的记录,该表可能对每个主记录都有多个记录。这是标志表。 即
class Project(models.Model):
id=models.UUIDField(
primary_key=True,
default=uuid.uuid4,
editable=False)
title = models.CharField(max_length=200)
file = models.ForeignKey(File,
on_delete=models.CASCADE,
related_name='projects'
)
type = models.CharField(max_length=200)
def __str__(self):
return self.title
class File(models.Model):
File_Status = Choices("Working","Uploading","Finished")
id=models.UUIDField(primary_key=True, default=uuid.uuid4, unique=True)
name=models.CharField(max_length=200)
filetype=models.ForeignKey(FileType, on_delete=models.CASCADE)
software=models.ForeignKey(Software, on_delete=models.CASCADE)
description=models.TextField()
created=models.DateTimeField(auto_now_add=True)
modified=models.DateTimeField(auto_now_add=True)
status=models.CharField(choices=File_Status, max_length=200, default=File_Status.Working)
def __str__(self):
return self.name
我正在尝试创建一个Linq查询,该查询将返回具有我指定的所有标志的记录。
这是我正在尝试执行的代码
MyRecord can have multiple subrecords Flag1, Flag4, Flag7
上面的代码几乎可以工作,但是返回带有var flags = new List<string>() { "Flag1"};
db.Contents.Include(f=>f.Flags)
.Where(a => flags.All(b=>a.Flags.Any(f =>f.Name==b)));
的记录以及带有Flag1
和Flag1,Flag4
的记录。我只需要返回设置了请求标志的记录。
答案 0 :(得分:0)
var answer = db.Contents.Include(x => x.Flags)
.Where(x =>
x.Flags.Select(y => y.Name).Distinct().Count() == flags.Count
&&
flags.All(y => x.Flags.Any(z => z.Name == y)))
.ToList();