繁体   English   中英

Linq查询返回1项而不是全部

[英]Linq query return 1 item instead of all

我正在使用下面的查询来获取具有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;
    }

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

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

x => x.SubCategory.SubCategoryName == subCatName

例如使用特定情况:

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

您也可以考虑修剪。

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

subCatName = subCatName.Trim();
List<int> productIDs = _db.ProductSubCat
     .Where(x => String.Equals(x.SubCategory.SubCategoryName.Trim(), subCatName, StringComparison.OrdinalIgnoreCase))
     .Select(p => p.ProductID)
     .ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM