В настоящее время я работаю со схемой, которая содержит сущности, каждая из которых содержит атрибуты, и каждая из них содержит одну спецификацию типа. Я хочу извлечь список, который удовлетворяет определенному требованию атрибута c, имеющему тип поиска и спецификацию c.
Я пробовал это до сих пор
schemaRepository
.Many()
.OrderByDescending(x => x.Version)
.SelectMany(x => x.Entities
.Where(x => x.Attributes
.Any(y => y.Type == DataType.Lookup &&
y.TypeSpecification.EntityInternalName == "Weather")));
Возвращает список объектов, которые удовлетворяют требованию, но ни один из объектов не имеет никаких атрибутов?
Как мне также включить это в запрос?
Я пытался добавить в конце команду include,
var entitiesWithLookupsTolookupEntityName = schemaRepository
.Many()
.OrderByDescending(x => x.Version)
.Include(x=> x.Entities)
.ThenInclude(x=>x.Attributes)
.ThenInclude(x=>x.TypeSpecification)
.SelectMany(x => x.Entities
.Where(x => x.Attributes
.Any(y => y.Type == DataType.Lookup &&
y.TypeSpecification.EntityInternalName == "Weather")));
, но это только все атрибуты и т. д. c. игнорируя условие Any для атрибутов ..
Как обойти это?
Я попытался немного его разделить
var entitiesWithLookupsTolookupEntityName = schemaRepository
.Many()
.OrderByDescending(x => x.Version)
.Take(1)
.SelectMany(x => x.Entities
.Where(y => y.Attributes
.Any(z => z.Type == DataType.Lookup && z.AttributeTypeSpecification.EntityInternalName == lookupEntityName))).AsEnumerable();
IList<ReferenceView> output = new List<ReferenceView>();
foreach (var entity in entitiesWithLookupsTolookupEntityName)
{
var attribute = schemaRepository.Many().OrderByDescending(x => x.Version).First().Entities
.Where(x => x.InternalName == entity.InternalName);
}
, но здесь я получаю исключение каждый раз для l oop