/// <summary> /// Получение массива нормализованных слагаемых. /// </summary> /// <returns>Массив нормализованных слагаемых.</returns> private TermStruct[] GetNormalizedTerms() { // Это будет общий набор слагаемых. var terms = LeftPart.ToList(); // Слагаемые с правой стороны должны перенестись влево с противоположным знаком. terms.AddRange(RightPart.Select(t => t.Minus())); var resultTerms = new List <TermStruct>(); // Группируем по переменным и степени, // так как слагаемые с этими одинаковыми составляющими мы можем сложить. foreach (var termGroup in terms.GroupBy(t => (t.Variable, t.Power)).ToArray()) { var multiplier = termGroup.Sum(t => t.Multiplier); if (multiplier != 0) { resultTerms.Add(new TermStruct { Multiplier = multiplier, Power = termGroup.Key.Power, Variable = termGroup.Key.Variable }); } foreach (var removingTerm in termGroup) { terms.Remove(removingTerm); } } resultTerms.AddRange(terms); return(resultTerms.OrderBy(t => (0 - t.Power, t.Variable == null ? int.MaxValue : 0 - t.Variable.Length, t.Variable)).ToArray()); }
public int CompareTo(NvidiaSmiDriver other) { var leftPartComparison = LeftPart.CompareTo(other.LeftPart); if (leftPartComparison != 0) { return(leftPartComparison); } return(RightPart.CompareTo(other.RightPart)); }
private void Process() { _startIndex = Center; int half = (int)Math.Floor((_itemsCount - 1) * 0.5); while (LeftPart.Count < half) { LeftPart.Add(ProcessPreviousIndex()); } LeftPart.Reverse(); Total.AddRange(LeftPart); Total.Add(Center); _startIndex = Center; while (RightPart.Count + LeftPart.Count < _itemsCount - 1) { RightPart.Add(ProcessNextIndex()); } Total.AddRange(RightPart); }
/// <summary> /// Convert part to sql string equivalent /// </summary> /// <param name="params">existing param list to populate in case of part object value</param> /// <returns>Sql string representation</returns> public override string ToStatement(List <IDataParameter> @params) { return(string.Concat(LeftPart.ToStatement(@params), ConditionValue, "(", RightPart.ToStatement(@params), ")")); }
public override string ToString() { return(LeftPart.ToString() + " -> " + String.Concat(RightPart.Select(t => t.ToString() + " ")).Trim()); }
/// <summary> /// Convert part to sql string equivalent /// </summary> /// <param name="params">existing param list to populate in case of part object value</param> /// <returns>Sql string representation</returns> public virtual string ToStatement(List <IDataParameter> @params) { return(string.Concat(LeftPart.ToStatement(@params), ConditionValue, RightPart.ToStatement(@params))); }