C# extension methods for the Int class.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ExtensionOverflow
{
/// <summary>
/// Integer Extensions
/// </summary>
public static class IntExtensions
{
/// <summary>
/// Get the ordinal value of positive integers.
/// </summary>
/// <remarks>
/// Only works for english-based cultures.
/// Code from: http://stackoverflow.com/questions/20156/is-there-a-quick-way-to-create-ordinals-in-c/31066#31066
/// With help: http://www.wisegeek.com/what-is-an-ordinal-number.htm
/// </remarks>
/// <param name="number">The number.</param>
/// <returns>Ordinal value of positive integers, or <see cref="int.ToString"/> if less than 1.</returns>
public static string ToOrdinal(this int number)
{
const string TH = "th";
string s = number.ToString();
// Negative and zero have no ordinal representation
if (number < 1)
{
return s;
}
number %= 100;
if ((number >= 11) && (number <= 13))
{
return s + TH;
}
switch (number % 10)
{
case 1: return s + "st";
case 2: return s + "nd";
case 3: return s + "rd";
default: return s + TH;
}
}
#region PercentageOf calculations
/// <summary>
/// The numbers percentage
/// </summary>
/// <param name="number">The number.</param>
/// <param name="percent">The percent.</param>
/// <returns>The result</returns>
public static decimal PercentageOf(this int number, int percent)
{
return (decimal)(number * percent / 100);
}
/// <summary>
/// Percentage of the number.
/// </summary>
/// <param name="percent">The percent</param>
/// <param name="number">The Number</param>
/// <returns>The result</returns>
public static decimal PercentOf(this int position, int total)
{
decimal result = 0;
if (position > 0 && total > 0)
{
result = (decimal)position / (decimal)total * 100;
}
return result;
}
public static decimal PercentOf(this int? position, int total)
{
if (position == null)
{
return 0;
}
decimal result = 0;
if (position > 0 && total > 0)
{
result = (decimal)((decimal)position / (decimal)total * 100);
}
return result;
}
/// <summary>
/// The numbers percentage
/// </summary>
/// <param name="number">The number.</param>
/// <param name="percent">The percent.</param>
/// <returns>The result</returns>
public static decimal PercentageOf(this int number, float percent)
{
return (decimal)(number * percent / 100);
}
/// <summary>
/// Percentage of the number.
/// </summary>
/// <param name="percent">The percent</param>
/// <param name="number">The Number</param>
/// <returns>The result</returns>
public static decimal PercentOf(this int position, float total)
{
decimal result = 0;
if (position > 0 && total > 0)
{
result = (decimal)((decimal)position / (decimal)total * 100);
}
return result;
}
/// <summary>
/// The numbers percentage
/// </summary>
/// <param name="number">The number.</param>
/// <param name="percent">The percent.</param>
/// <returns>The result</returns>
public static decimal PercentageOf(this int number, double percent)
{
return (decimal)(number * percent / 100);
}
/// <summary>
/// Percentage of the number.
/// </summary>
/// <param name="percent">The percent</param>
/// <param name="number">The Number</param>
/// <returns>The result</returns>
public static decimal PercentOf(this int position, double total)
{
decimal result = 0;
if (position > 0 && total > 0)
{
result = (decimal)((decimal)position / (decimal)total * 100);
}
return result;
}
/// <summary>
/// The numbers percentage
/// </summary>
/// <param name="number">The number.</param>
/// <param name="percent">The percent.</param>
/// <returns>The result</returns>
public static decimal PercentageOf(this int number, decimal percent)
{
return (decimal)(number * percent / 100);
}
/// <summary>
/// Percentage of the number.
/// </summary>
/// <param name="percent">The percent</param>
/// <param name="number">The Number</param>
/// <returns>The result</returns>
public static decimal PercentOf(this int position, decimal total)
{
decimal result = 0;
if (position > 0 && total > 0)
{
result = (decimal)position / (decimal)total * 100;
}
return result;
}
/// <summary>
/// The numbers percentage
/// </summary>
/// <param name="number">The number.</param>
/// <param name="percent">The percent.</param>
/// <returns>The result</returns>
public static decimal PercentageOf(this int number, long percent)
{
return (decimal)(number * percent / 100);
}
/// <summary>
/// Percentage of the number.
/// </summary>
/// <param name="percent">The percent</param>
/// <param name="number">The Number</param>
/// <returns>The result</returns>
public static decimal PercentOf(this int position, long total)
{
decimal result = 0;
if (position > 0 && total > 0)
{
result = (decimal)position / (decimal)total * 100;
}
return result;
}
#endregion
public static string ToString(this int? value, string defaultvalue)
{
if (value == null)
{
return defaultvalue;
}
return value.Value.ToString();
}
public static bool IsInRange(this int self, int begin, int end)
{
return self >= begin && self <= end;
}
}
}