Невозможно получить названия продуктов на основе условия - PullRequest
0 голосов
/ 18 июня 2019

У меня есть два модельных класса

public class GetProductNameRequest
{
    public DateTime ExpiryDate { get; set; }
    public bool IsActive { get; set; }
}

public class GetProductNameResponse
{
    public List<string> ProductName { get; set; }
}

запрос linq:

public async Task<List<ProductSKU>> GetProductNames(GetProductNameRequest request)
{
    var res = DbSet.Include(t => t.Product).Where(t => t.EndDate >= request.ExpiryDate && t.IsActive == request.IsActive).GroupBy(x => x.Product);
    Contracts.Models.ProductNameResponse product = new Contracts.Models.ProductNameResponse();

    foreach (var item in res)
    {
        product.ProductName = item.Key.ProductName;
    }

}

Так что я не могу получить список названий продуктов на основе идентификатора плз, дайте мне знать решение.

Таблица продуктов:

SkuId   ProductId   Sku MRP CreatedOn   UpdatedOn   StartDate   EndDate IsActive    RowVersion

1 Ответ

2 голосов
/ 18 июня 2019

У вас есть ряд проблем в вашем коде.Две наиболее очевидные причины, по которым вы ничего не получаете в своей переменной product, это то, что она инициализируется внутри цикла, и к ней ничего не добавляется.Код должен выглядеть примерно так:

Contracts.Models.ProductNameResponse product = new  Contracts.Models.ProductNameResponse();
foreach (var item in res)
    {
        product.ProductName.Add(item.Key.ProductName);
    }

Я также думаю, что ваш оператор LINQ все равно выдаст ошибку о том, что один курсор не закрыт, а другой открыт.Поиск IQueriable против IEnumerable проблема.Но вы не перечислите это как проблему;так что, возможно, в вашем источнике данных все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...