无法根据条件获取产品名称

时间:2019-06-18 05:24:34

标签: c# entity-framework linq asp.net-web-api

我有两个模型类

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;
    }

}

所以我无法根据ID的plz获取产品名称列表,让我知道解决方案。

productsku表:

SkuId   ProductId   Sku MRP CreatedOn   UpdatedOn   StartDate   EndDate IsActive    RowVersion

1 个答案:

答案 0 :(得分:2)

您的代码中存在许多问题。您没有在product变量中得到任何东西的两个最明显的原因是,该变量在循环内被初始化,并且没有添加任何内容。代码应类似于

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

我还认为您的LINQ语句仍然会引发一个错误,即一个游标未打开而另一个游标却打开。搜索IQueriable vs IEnumerable问题。但是您不会将其列为问题;所以也许在您的数据源中就可以了。