public void Create() { var comparer = Equality <DateTime> .CreateComparer(x => x.Day); Assert.IsNotNull(comparer); Assert.IsInstanceOfType(comparer, typeof(IEqualityComparer <DateTime>)); }
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)); }
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()); }
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); }
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 }
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); }
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)); }
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)); }
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); }