public VwProduct GetProductByBarcode(string barcode)
 {
     if (barcode.IsNullOrEmpty())
     {
         return(null);
     }
     return(VwProductRepository.Find(o => o.Barcode == barcode));
 }
        public IEnumerable <dynamic> GetPageList(System.Collections.Specialized.NameValueCollection nvl, out int recordCount)
        {
            var category   = nvl["parentType"]; //选中分类
            var state      = nvl["state"];      //状态
            var searchText = nvl["searchText"]; //查找文本
            var brandsn    = nvl["brandsn"];
            var query      = VwProductRepository.GetQuery();

            if (!category.IsNullOrEmpty())
            {
                var bigs   = category.Split(',').Select(o => int.Parse(o)).ToList();
                var childs = ProductCategoryService.GetChildSNs(bigs, true);
                query = query.Where(o => childs.Contains(o.CategorySN));
            }
            if (!state.IsNullOrEmpty())
            {
                var ct = short.Parse(state);
                query = query.Where(o => o.State == ct);
            }
            if (!brandsn.IsNullOrEmpty())
            {
                var sn = brandsn.Split(',').Select(o => o.IsNullOrEmpty() ? new Nullable <int>() : o.ToType <int>()).ToList();
                query = query.Where(o => sn.Contains(o.BrandSN));
            }
            if (!searchText.IsNullOrEmpty())
            {
                searchText = searchText.Trim();
                query      = query.Where(o => o.Barcode.Contains(searchText) || o.Title.Contains(searchText));
            }
            recordCount = query.Count();
            var list    = query.ToPageList();
            var cids    = list.Where(o => !o.CompanyIds.IsNullOrEmpty()).Select(o => o.CompanyIds.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(i => int.Parse(i))).SelectMany(o => o).Distinct().ToList();
            var traders = TraderRepository.GetQuery(o => cids.Contains(o.CID)).ToList();

            return(list.Select(o => new {
                o.Id,
                o.Source,
                o.Barcode,
                o.CategoryTitle,
                o.CategorySN,
                o.BrandTitle,
                o.Title,
                o.Size,
                o.SubUnit,
                o.SysPrice,
                o.TraderNum,
                o.StateTitle,
                CompanyTitle = o.CompanyIds.IsNullOrEmpty()?"":traders.Where(i => i.CID == int.Parse(o.CompanyIds.Split(',')[0])).Select(i => i.Title).FirstOrDefault()
            }));
        }