0

我正在使用下面的查询来获取所有具有 a 的记录,SubCategoryName == subCatName并且我想将所有的记录ProductID作为ints. 问题是当我的代码运行时它只返回 1 个 int(record) 而不是全部。我怎样才能让它返回所有具有该 subCatName 的记录?它返回一个计数 = 1,容量为 4。所以它是一个int[4]但只有第一个 [0] 是 = 实际产品 ID 其余返回零?

   public List<int> GetPRodSubCats(string subCatName)
    {
        var _db = new ProductContext();

        if (subCatName != null)
        {
            var  query = _db.ProductSubCat
                            .Where(x => x.SubCategory.SubCategoryName == subCatName)
                            .Select(p => p.ProductID);

            return query.ToList<int>();
        }
        return null;
    }
4

2 回答 2

2

这似乎更像是这里的预期行为。你怎么知道你不仅有 1 条满足Where谓词的记录。

您的代码是正确的,但是您可能希望标准化您的比较。

x => x.SubCategory.SubCategoryName == subCatName

使用特定案例,例如:

x => x.SubCategory.SubCategoryName.ToLower() == subCatName.ToLower()

你也可以考虑修剪。

于 2013-03-01T16:28:53.110 回答
2

正如丹尼尔已经提到的那样,代码应该可以工作。但也许您期望它不区分大小写或忽略空格。所以这更宽容:

subCatName = subCatName.Trim();
List<int> productIDs = _db.ProductSubCat
     .Where(x => String.Equals(x.SubCategory.SubCategoryName.Trim(), subCatName, StringComparison.OrdinalIgnoreCase))
     .Select(p => p.ProductID)
     .ToList();
于 2013-03-01T16:31:42.733 回答