Рассмотрим эту структуру для модели:
public class Entity : Document
{
[BsonRepresentation(BsonType.Int32)]
public int CreateUserId { get; set; }
[BsonRepresentation(BsonType.Int32)]
public int ChangeUserId { get; set; }
[BsonDateTimeOptions(Kind = DateTimeKind.Utc, Representation = BsonType.DateTime)]
public DateTime ChangeDate { get; set; }
}
public class TrackedEntity : Entity
{
public bool Deleted { get; set; }
}
public class Shop : TrackedEntity
{
public string Name { get; set; }
public string Address { get; set; }
public string MobilePhone { get; set; }
public string PhoneNumber { get; set; }
public string ShopTelegramToken { get; set; }
public string ShopAndroidId { get; set; }
public string TelegramURL { get; set; }
public string TelegramName { get; set; }
public List<Category> CategoryList { get; set; } = new List<Category>();
}
public class Category : TrackedEntity
{
[BsonRepresentation(BsonType.String)]
public string Name { get; set; }
public string Description { get; set; }
[BsonRepresentation(BsonType.String)]
public string ParentCategoryId { get; set; }
[BsonRepresentation(BsonType.String)]
public string ShopId { get; set; }
public List<Product> ProductList { get; set; } = new List<Product>();
}
public class Product : TrackedEntity
{
[BsonRepresentation(BsonType.String)]
public string Name { get; set; }
[BsonRepresentation(BsonType.String)]
public string ProductCategoryId { get; set; }
public string ImageId { get; set; }
[BsonRepresentation(BsonType.String)]
public string ShopId { get; set; }
public List<Property> PropertyList { get; set; } = new List<Property>();
}
Когда я пытаюсь получить Продукты определенной категории, возвращается ноль:
public async Task<PagedList<Product>> GetProductsOfCategory(Guid id, Guid shopId, int pageNumber, int pageSize)
{
var category = await _context.GetCollection<Shop>("shops").Find(x => x.Id == shopId && x.CategoryList.Any(y => y.Id == id)).Project(c => c.CategoryList.ElementAt(-1)).SingleOrDefaultAsync();
return await PagedList<Product>.CreateAsync(category.ProductList, pageNumber, pageSize);
}
Я думаю, что проблема в методе ElementAt вметод Project, потому что без использования это возвращаемое значение не равно нулю.