Esempio n. 1
0
        public void Create()
        {
            var comparer = Equality <DateTime> .CreateComparer(x => x.Day);

            Assert.IsNotNull(comparer);
            Assert.IsInstanceOfType(comparer, typeof(IEqualityComparer <DateTime>));
        }
Esempio n. 2
0
        public override IResult Proces(dynamic value)
        {
            var result = CheckNull(this, value);

            if (!result.HasData)
            {
                return(result);
            }

            System.Collections.Generic.IEnumerable <Request.HttpFile> values = value;
            if (!values.Any())
            {
                if (this.CanNull)
                {
                    return(this.ResultCreate());
                }
                else
                {
                    return(this.ResultCreate(State, Message ?? string.Format("argument \"{0}\" can not null.", this.Member)));
                }
            }

            foreach (var item in values)
            {
                if (Size < (item.Value.Length / 1024))
                {
                    return(this.ResultCreate(-171, string.Format("File size max {0} KB.", Size)));
                }
            }

            var files = values.Distinct(Equality <Request.HttpFile> .CreateComparer(c => c.Key)).ToDictionary(c => c.Key, c => c.Value.StreamReadByte());

            return(this.ResultCreate(files));
        }
Esempio n. 3
0
        public static List <TableModel> GetTables(this List <TableRelationModel> list)
        {
            var tables = list.Select(a => new TableModel()
            {
                TableName = a.TableName
            });
            var foreginables = list.Select(a => new TableModel()
            {
                TableName = a.ForeginTableName
            });

            return(tables.Union(foreginables,
                                Equality <TableModel> .
                                CreateComparer(x => x.TableName)).
                   ToList());
        }
Esempio n. 4
0
 public static List <DropDownListItem> Format(this List <DropDownListItem> items, string defaultText, string defaultValue, string selectedValue = "")
 {
     selectedValue = selectedValue.HasValue() ? selectedValue : defaultValue;
     items         = items.Distinct(Equality <DropDownListItem> .CreateComparer(p => p.value)).ToList();
     if (!items.Any(a => a.text == defaultText && a.value == defaultValue))
     {
         items.Insert(0, new DropDownListItem {
             Text = defaultText, Value = defaultValue, Selected = true
         });
     }
     items.ForEach(a =>
     {
         if (a.value == selectedValue || a.text == selectedValue)
         {
             a.Selected = true;
         }
     });
     return(items);
 }
Esempio n. 5
0
        static void Main(string[] args)
        {
            var v0 = new Employee {
                School = new School {
                    City = "Beijing"
                }
            };
            var v1 = new Employee {
                School = new School {
                    City = "Beijing"
                }
            };
            var v2 = new Employee {
                School = new School {
                    City = "Shanghai"
                }
            };
            var v3 = new Employee {
                School = null
            };
            var v4 = new Employee {
                School = null
            };

            List <Employee> employees = new List <Employee>();

            employees.Add(v0);
            employees.Add(v1);
            employees.Add(v2);
            employees.Add(v3);

            var companylComparer = Equality <School> .CreateComparer(i => i.City);

            var employeeComparer = Equality <Employee> .CreateComparer(i => i.School, companylComparer);

            List <Employee> aa = employees.Distinct(employeeComparer).ToList();

            var b1 = employeeComparer.Equals(v0, v1);   // true
            var b2 = employeeComparer.Equals(v0, v2);   // false
            var b3 = employeeComparer.Equals(v0, v3);   // false
            var b4 = employeeComparer.Equals(v3, v4);   // false
        }
Esempio n. 6
0
        public void DistinctByWithComparerTest()
        {
            var list = Enumerable.Range(0, 200).Select(i => new EqualityTester(i, DateTime.Today.AddDays(i % 4))).ToList();

            var distinctList = list.Distinct(Equality <EqualityTester> .CreateComparer(x => x.Date, EqualityComparer <DateTime> .Default)).ToList();

            Assert.AreEqual(4, distinctList.Count);

            Assert.AreEqual(0, distinctList[0].Index);
            Assert.AreEqual(1, distinctList[1].Index);
            Assert.AreEqual(2, distinctList[2].Index);
            Assert.AreEqual(3, distinctList[3].Index);

            Assert.AreEqual(DateTime.Today, distinctList[0].Date);
            Assert.AreEqual(DateTime.Today.AddDays(1), distinctList[1].Date);
            Assert.AreEqual(DateTime.Today.AddDays(2), distinctList[2].Date);
            Assert.AreEqual(DateTime.Today.AddDays(3), distinctList[3].Date);

            Assert.AreEqual(200, list.Count);
        }
Esempio n. 7
0
        public void CreateComparerTest()
        {
            var list1 = new List <TestInfo>
            {
                new TestInfo {
                    Id = Guid.NewGuid(), Name = "a"
                },
                new TestInfo {
                    Id = Guid.NewGuid(), Name = "b"
                },
            };
            var info = new TestInfo {
                Id = Guid.NewGuid(), Name = "a"
            };
            var comparer = Equality <TestInfo> .CreateComparer(m => m.Name);

            Assert.IsTrue(list1.Contains(info, comparer));

            Assert.IsTrue(list1.Contains(info, r => r.Name));
        }
Esempio n. 8
0
        void filter_NotifyOrderData(string data)
        {
            if (string.IsNullOrEmpty(data))
            {
                return;
            }

            //_catchDataStatus = true;//有数据的时候就设置为得到数据状态
            _currentBrowser.LastCatchDataTime = DateTime.Now;
            List <TradeDepthsEntity> diff = new List <TradeDepthsEntity>();

            try
            {
                //var order = JsonConvert.DeserializeObject<BTMOrder>(data);
                var trade = JsonConvert.DeserializeObject <tradeInfo>(data);
                SetUpdateLabel?.Invoke(trade);
                if (!trade.tradeDepths.Any())
                {
                    LogPrint?.Invoke("没有抓取到数据");
                }
                if (_lastdata != null)
                {
                    diff =
                        trade.tradeDepths.Except(_lastdata, Equality <TradeDepthsEntity> .CreateComparer(p => p.id))
                        .ToList();
                }
                else
                {
                    diff = trade.tradeDepths.ToList();
                }
                _lastdata = trade.tradeDepths;

                NotifyOrderData?.Invoke(diff, trade);
            }
            catch (Exception e)
            {
                LogPrint?.Invoke(string.Format("{0}-{1}", "filter_NotifyOrderData", e.Message));
                LoggerFactory.GetLog().Error("filter_NotifyOrderData 出错!", e);
            }
        }
 public static IEqualityComparer <T> CreateEqualityComparer <T, V>(this object obj, Func <T, V> keySelector)
 {
     return(Equality <T> .CreateComparer(keySelector));
 }
Esempio n. 10
0
        public static SkuAttributeViewModel AsSkuAttributeViewModelD(this IList <ProductSkuEntity> entities, decimal exchangeRate, IList <PromotionEntity> promotions, string selectedSku = "", ItemViewSupporter dto = null)
        {
            if (entities == null || !entities.Any())
            {
                return(null);
            }

            SkuAttributeViewModel model = new SkuAttributeViewModel();

            #region 元数据组装

            var template = entities.FirstOrDefault();
            if (template == null)
            {
                return(null);
            }
            if (dto != null)
            {
                model.ProductName = dto.Name;
                var firstOrDefault = dto.Images.FirstOrDefault();
                if (firstOrDefault != null)
                {
                    model.ImgUrl = firstOrDefault.ImagePath.GetImageSmallUrl();
                }

                model.InitPrice = promotions.FirstOrDefault(m => m.Sku == template.Sku).GetSalePrice(dto.MinPriceOriginal, exchangeRate).ToNumberRoundString();
                //(GetDisplayPrice(promotions.FirstOrDefault(m => m.Sku == template.Sku), (template.MinPrice)) *exchangeRate).ToNumberRoundString(); //dto.MinPrice.ToNumberRoundString();
                //dto.SkuDtos.ToList().Min(d=>d.Price)
                var skuDto = dto.SkuDtos.ToList().OrderBy(d => d.Price).FirstOrDefault();

                model.TaxAmount = TotalTaxHelper.GetTotalTaxAmount(TotalTaxHelper.GetRealTaxType(skuDto.ReportStatus, skuDto.IsCrossBorderEBTax,
                                                                                                 promotions.FirstOrDefault(m => m.Sku == skuDto.Sku).GetSalePrice(skuDto.Price, null)),
                                                                   promotions.FirstOrDefault(m => m.Sku == skuDto.Sku).GetSalePrice(skuDto.Price, null),
                                                                   skuDto.CBEBTaxRate, skuDto.ConsumerTaxRate, skuDto.VATTaxRate, skuDto.PPATaxRate).ToNumberRound();
                model.IsDutyOnSeller = dto.IsDutyOnSeller;
                model.RealTaxType    = TotalTaxHelper.GetRealTaxType(skuDto.ReportStatus, skuDto.IsCrossBorderEBTax,
                                                                     promotions.FirstOrDefault(m => m.Sku == skuDto.Sku).GetSalePrice(skuDto.Price, exchangeRate));
            }
            else
            {
                model.ProductName = template.Name;
                model.ImgUrl      = "";
                model.InitPrice   = promotions.FirstOrDefault(m => m.Sku == template.Sku).GetSalePrice(template.MinPrice, exchangeRate).ToNumberRoundString();
                //(GetDisplayPrice(promotions.FirstOrDefault(m => m.Sku == template.Sku), (template.MinPrice)) *exchangeRate).ToNumberRoundString(); //dto.MinPrice.ToNumberRoundString();//template.MinPrice.ToNumberRoundString();
            }
            model.MainName = template.MainDicValue;
            model.MainCode = template.MainDicKey;
            model.SubName  = template.SubDicValue;
            model.SubCode  = template.SubDicKey;

            #endregion

            List <MainSkuAttribute> mainList = new List <MainSkuAttribute>();
            List <SubSkuAttribute>  subList  = new List <SubSkuAttribute>();
            //只有一个销售属性
            if (string.IsNullOrEmpty(model.SubCode) && string.IsNullOrEmpty(model.SubName))
            {
                mainList = entities.DistinctBy(d => new { d.MainKey, d.MainValue }).Select(n => new MainSkuAttribute()
                {
                    MetaCode      = n.MainDicKey,
                    Id            = n.MainKey,
                    Name          = n.MainValue,
                    NetWeightUnit = n.NetWeightUnit,
                    Sku           = n.Sku,
                    Flag          = n.Qty == 0 ? -1 : (!string.IsNullOrEmpty(selectedSku) && selectedSku == n.Sku) == true ? 1 : 0,
                    ForOrder      = n.Qty,
                    Price         = promotions.FirstOrDefault(m => m.Sku == n.Sku).GetSalePrice(n.Price, exchangeRate),//(GetDisplayPrice(promotions.FirstOrDefault(m => m.Sku == n.Sku), (n.Price)) * exchangeRate).ToNumberRound(),
                    OriginalPrice = (n.Price * exchangeRate).ToNumberRound(),
                    Promotion     = GetPromotionItem(promotions.FirstOrDefault(m => m.Sku == n.Sku), exchangeRate),

                    TaxAmount = TotalTaxHelper.GetTotalTaxAmount(TotalTaxHelper.GetRealTaxType(n.ReportStatus, n.IsCrossBorderEBTax,
                                                                                               promotions.FirstOrDefault(m => m.Sku == n.Sku).GetSalePrice(n.Price, exchangeRate)),
                                                                 promotions.FirstOrDefault(m => m.Sku == n.Sku).GetSalePrice(n.Price, exchangeRate),
                                                                 n.CBEBTaxRate, n.ConsumerTaxRate, n.VATTaxRate, n.PPATaxRate).ToNumberRound(),
                    IsDutyOnSeller = n.IsDutyOnSeller,
                    RealTaxType    = TotalTaxHelper.GetRealTaxType(n.ReportStatus, n.IsCrossBorderEBTax,
                                                                   promotions.FirstOrDefault(m => m.Sku == n.Sku).GetSalePrice(n.Price, exchangeRate)),

                    SubAttributes = new List <SubSkuAttribute>(0)
                }).OrderBy(n => n.Id.As(0)).ToList();
            }
            else
            {
                var comparer1 = Equality <SubSkuAttribute> .CreateComparer(p => p.Id);

                subList = entities.DistinctBy(d => new { d.SubKey, d.SubValue }).Select(ss => new SubSkuAttribute()
                {
                    Flag     = -1,
                    Id       = ss.SubKey,
                    MetaCode = ss.SubDicKey,
                    Name     = ss.SubValue,
                }).OrderBy(nn => nn.Id.As(0)).ToList();

                mainList = entities.DistinctBy(d => new { d.MainKey, d.MainValue }).Select(n => new MainSkuAttribute()
                {
                    MetaCode      = n.MainDicKey,
                    Id            = n.MainKey,
                    Name          = n.MainValue,
                    Flag          = entities.Where(s => s.MainKey == n.MainKey && s.MainDicKey == n.MainDicKey).Any(nn => nn.Sku == selectedSku) ? 1 : 0,
                    NetWeightUnit = n.NetWeightUnit,
                    Sku           = "",
                    ForOrder      = n.Qty,
                    Price         = promotions.FirstOrDefault(m => m.Sku == n.Sku).GetSalePrice(n.Price, exchangeRate),
                    OriginalPrice = (n.Price * exchangeRate).ToNumberRound(),
                    Promotion     = GetPromotionItem(promotions.FirstOrDefault(m => m.Sku == n.Sku), exchangeRate),
                    TaxAmount     = TotalTaxHelper.GetTotalTaxAmount(TotalTaxHelper.GetRealTaxType(n.ReportStatus, n.IsCrossBorderEBTax,
                                                                                                   promotions.FirstOrDefault(m => m.Sku == n.Sku).GetSalePrice(n.Price, exchangeRate)),
                                                                     promotions.FirstOrDefault(m => m.Sku == n.Sku).GetSalePrice(n.Price, exchangeRate),
                                                                     n.CBEBTaxRate, n.ConsumerTaxRate, n.VATTaxRate, n.PPATaxRate).ToNumberRound(),
                    IsDutyOnSeller = n.IsDutyOnSeller,
                    RealTaxType    = TotalTaxHelper.GetRealTaxType(n.ReportStatus, n.IsCrossBorderEBTax,
                                                                   promotions.FirstOrDefault(m => m.Sku == n.Sku).GetSalePrice(n.Price, exchangeRate)),



                    SubAttributes = entities.Where(s => s.MainKey == n.MainKey && s.MainDicKey == n.MainDicKey).Select(ss => new SubSkuAttribute()
                    {
                        Flag          = ss.Qty == 0 ? -1 : (!string.IsNullOrEmpty(selectedSku) && selectedSku == ss.Sku) == true ? 1 : 0,
                        ForOrder      = ss.Qty,
                        Id            = ss.SubKey,
                        MetaCode      = ss.SubDicKey,
                        Name          = ss.SubValue,
                        Price         = promotions.FirstOrDefault(m => m.Sku == n.Sku).GetSalePrice(ss.Price, exchangeRate),//(GetDisplayPrice(promotions.FirstOrDefault(m => m.Sku == n.Sku), (ss.Price))).ToNumberRound(),
                        OriginalPrice = (ss.Price * exchangeRate).ToNumberRound(),
                        Promotion     = GetPromotionItem(promotions.FirstOrDefault(m => m.Sku == n.Sku), exchangeRate),
                        Sku           = ss.Sku,
                        TaxAmount     = TotalTaxHelper.GetTotalTaxAmount(TotalTaxHelper.GetRealTaxType(ss.ReportStatus, ss.IsCrossBorderEBTax,
                                                                                                       promotions.FirstOrDefault(m => m.Sku == ss.Sku).GetSalePrice(ss.Price, exchangeRate)),
                                                                         promotions.FirstOrDefault(m => m.Sku == ss.Sku).GetSalePrice(ss.Price, exchangeRate),
                                                                         ss.CBEBTaxRate, ss.ConsumerTaxRate, ss.VATTaxRate, ss.PPATaxRate).ToNumberRound(),
                        IsDutyOnSeller = ss.IsDutyOnSeller,
                        RealTaxType    = TotalTaxHelper.GetRealTaxType(ss.ReportStatus, ss.IsCrossBorderEBTax,
                                                                       promotions.FirstOrDefault(m => m.Sku == ss.Sku).GetSalePrice(ss.Price, exchangeRate))
                    }).ToList().Union <SubSkuAttribute>(subList, comparer1).OrderBy(nn => nn.Id.As(0)).ToList()
                }).ToList();
            }

            model.MainAttributes = mainList;
            model.SubAttributes  = subList;
            //如果为净重   增加单位
            if (model.MainName != null && model.MainName != "")
            {
                if (model.MainName.Equals("净重") || model.MainName.Equals("淨重") || model.MainName.Equals("净含量") || model.MainName.Equals("凈含量"))
                {
                    for (int i = 0; i < model.MainAttributes.Count; i++)
                    {
                        var mainAttribute = model.MainAttributes[i];

                        //当数值带有小数点,且末尾有0,则清小数点后空末尾处的0,然后再拼接单位
                        string number = mainAttribute.Name;
                        if (string.IsNullOrEmpty(number))
                        {
                            number = "0";
                        }
                        double result = 0;
                        if (Double.TryParse(number, out result))
                        {
                            mainAttribute.Name = string.Format("{0}{1}", result, mainAttribute.NetWeightUnit);
                        }
                        else
                        {
                            mainAttribute.Name = "抱歉,数据有误!";
                        };
                    }
                }
            }

            return(model);
        }