| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace wms.service.Service.StrategyService{    public class LocationForStrategyInfoComparer : IComparer<LocationForStrategyInfo>    {        private string _fieldName { get; set; }        public LocationForStrategyInfoComparer(string fieldName)        {            _fieldName = fieldName;        }        public int Compare(LocationForStrategyInfo x, LocationForStrategyInfo y)        {            switch (_fieldName)            {                case "InTime":                    x.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));                    y.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));                    return x.StockList.First().InTime.Date.CompareTo(y.StockList.First().InTime.Date);                case "ProductionTime":                    x.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));                    y.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));                    return x.StockList.First().ProductionTime.Date.CompareTo(y.StockList.First().ProductionTime.Date);                case "LastInTime":                    x.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));                    y.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));                    return x.StockList.First().LastInTime.Date.CompareTo(y.StockList.First().LastInTime.Date);                case "MixCount":                    var temp = x.StockList.Select(q => q.MaterialId).Distinct().Count().CompareTo(y.StockList.Select(q => q.MaterialId).Distinct().Count()) * (-1);                    if (temp == 0)                    {                        x.StockList.Sort(new LocationForStrategyInfoStockComparer("ProductionTime"));                        y.StockList.Sort(new LocationForStrategyInfoStockComparer("ProductionTime"));                        return x.StockList.First().ProductionTime.Date.CompareTo(y.StockList.First().ProductionTime.Date);                    }                    return temp;                default:                    return x.Id.CompareTo(y.Id);            }        }    }    public class LocationForStrategyInfoStockComparer : IComparer<LocationForStrategyInfoStock>    {        private string _fieldName { get; set; }        public LocationForStrategyInfoStockComparer(string fieldName)        {            _fieldName = fieldName;        }        public int Compare(LocationForStrategyInfoStock x, LocationForStrategyInfoStock y)        {            switch (_fieldName)            {                case "InTime":                    return x.InTime.Date.CompareTo(y.InTime.Date);                case "ProductionTime":                    return x.ProductionTime.Date.CompareTo(y.ProductionTime.Date);                case "LastInTime":                    return x.LastInTime.Date.CompareTo(y.LastInTime.Date);                default:                    return x.GroupStockDetailId.CompareTo(y.GroupStockDetailId);            }        }    }}
 |