错误:实例参数:无法从'int'转换为'System.Linq.IQueryable <int>'</int>

时间:2012-09-19 06:41:24

标签: c# asp.net-mvc nopcommerce

我写过服务类。

 public partial class ProductService : IProductService
    {
        #region Constants

        private const string PRODUCTVARIANTPRICERANGE_PATTERN_KEY = "Nop.productVariantPriceRange.";
        #endregion

        #region Fields


        private readonly IRepository<ProductVariantPriceRange> _productVariantPriceRangeRepository;

        public ProductService(ICacheManager cacheManager,

            IRepository<ProductVariantPriceRange> productVariantPriceRangeRepository,
            )
        {

            this._productVariantPriceRangeRepository = productVariantPriceRangeRepository;

        }

        #endregion

然后写一个函数

 public virtual void CheckProductVariantPriceRange(int productVariantPriceRangeId)
        {
            bool flage=true;
            var query = _productVariantPriceRangeRepository.Table;

               query = query.Where(m => m.ProductVariantId.Contains(productVariantPriceRangeId));


            var ProductVariantPriceRangeS = query.ToList();
            if (ProductVariantPriceRangeS.Count == 0)
            {
                flage = false;
            }

        }

但它发生了流动的错误..

  1. Instance argument: cannot convert from 'int' to 'System.Linq.IQueryable<int>'

  2. 'int'不包含'Contains'的定义和最佳扩展方法重载     'System.Linq.Queryable.Contains(System.Linq.IQueryable,TSource)'有一些无效的参数

  3. 我不知道这是什么错误。 我该怎么解决这个问题.. Plz帮助

2 个答案:

答案 0 :(得分:1)

ProductVariantId属性不是集合,它是单个值。您应该将每个记录的属性值与期望值进行比较:

query = query.Where(m => m.ProductVariantId == productVariantPriceRangeId);

答案 1 :(得分:1)

删除Contains方法调用。换句话说,替换:

query = query.Where(m => 
    m.ProductVariantId.Contains(productVariantPriceRangeId));

query = query.Where(m => m.ProductVariantId == productVariantPriceRangeId);