public StringOrIntComparer( IComparer <string> stringComparer, IEqualityComparer <string> stringEqualityComparer, NullComparison nullComparison = NullComparison.NullsFirst) : base(nullComparison) { this.stringComparer = stringComparer; this.stringEqualityComparer = stringEqualityComparer; }
public FranchiseEntryTitleComparer( CultureInfo culture, NullComparison nullComparison = NullComparison.NullsFirst) : base(nullComparison) { this.titleComparer = new TitleComparer(culture); this.baseComparer = ComparerBuilder.For <FranchiseEntry>() .OrderBy(this.GetTitleName) .ThenBy(entry => entry.GetStartYear()) .ThenBy(entry => entry.GetEndYear()); }
public ListItemTitleComparer( CultureInfo culture, IComparer <ListItem> otherComparer, Func <ListItem, string> getTitle, Func <Franchise, string> getFranchiseTitle, NullComparison nullComparison = NullComparison.NullsFirst) : base(nullComparison) { this.getTitle = getTitle; this.getFranchiseTitle = getFranchiseTitle; this.titleComparer = new TitleComparer(culture); this.otherComparer = otherComparer; this.titleAndOtherComparer = ComparerBuilder.For <ListItem>() .OrderBy(this.getTitle, this.titleComparer) .ThenBy(otherComparer); }
protected NullableComparerBase(NullComparison nullComparison) => this.NullComparison = nullComparison;
protected override Expression VisitBinary(BinaryExpression node) { switch (node.NodeType) { case ExpressionType.NotEqual: case ExpressionType.Equal: var @null = new NullComparison().Extract(node); if (@null.Null) { var column = _columns.Single(@null.Path); Builder.Append(column.Column()).Append(" IS "); switch (node.NodeType) { case ExpressionType.NotEqual: Builder.Append("NOT NULL"); break; case ExpressionType.Equal: Builder.Append("NULL"); break; } return(node); } break; } if (ExpressionType.OrElse == node.NodeType) { Builder.Append('('); } Visit(node.Left); Builder.Append(' '); /* * TODO: We should really be checking for valid comparisons * * There are some constraints for key fields, IIRC they can only use = */ switch (node.NodeType) { case ExpressionType.LessThanOrEqual: Builder.Append("<="); break; case ExpressionType.LessThan: Builder.Append("<"); break; case ExpressionType.GreaterThanOrEqual: Builder.Append(">="); break; case ExpressionType.GreaterThan: Builder.Append(">"); break; case ExpressionType.Equal: Builder.Append("="); break; case ExpressionType.NotEqual: Builder.Append("!="); break; case ExpressionType.AndAlso: Builder.Append("AND"); break; case ExpressionType.OrElse: Builder.Append("OR"); break; default: throw new ArgumentException("NodeType: " + node.NodeType); } Builder.Append(' '); Visit(node.Right); if (ExpressionType.OrElse == node.NodeType) { Builder.Append(')'); } return(node); }