我有这个linq查询,它检索数据库中的所有元素,并根据某些条件过滤输出。
我想要某些实体的列表,这些实体仅具有符合特定过滤器的属性
var entitiesWithLookupsTolookupEntityName = schemaRepository
.Many()
.OrderByDescending(x => x.Version)
.Take(1)
.Include(x => x.Entities)
.ThenInclude(x => x.Attributes)
.ThenInclude(x => x.AttributeTypeSpecification)
.SelectMany(x => x.Entities
.Where(x => x.Attributes.Any(y => y.Type == DataType.Lookup && y.AttributeTypeSpecification.EntityInternalName == lookupEntityName))).AsEnumerable();
这将返回唯一符合过滤条件的实体,但还包括不符合过滤条件的实体的所有属性。
我可以在这样的第二个查询中将它们过滤掉
var attributefiltered = entitiesWithLookupsTolookupEntityName.SelectMany(x =>
x.Attributes.Where(y =>
y.Type == DataType.Lookup && y.AttributeTypeSpecification.EntityInternalName == lookupEntityName));
但是我为什么不能将两者结合?
似乎很奇怪我能够做到两步而不是一步? 使用.where().any()
时出了点问题