Introduction
For a collection of integers/decimals, we can use the .Max()
and .Min()
to get the maximum and minimum value of the collection respectively.
However, there are two more case scenarios that I have faced, which I am going to discuss next. Following is the definition of a class Item
that I am going to use here:
class Item: IComparable<Item>
{
public string itemName { get; set; }
public int itemPrice { get; set; }
int IComparable<item>.CompareTo(Item other)
{
if (other.itemPrice > this.itemPrice)
return -1;
else if (other.itemPrice == this.itemPrice)
return 0;
else
return 1;
}
public static bool operator >(Item X, Item Y)
{
if (X == null && Y == null)
{
return false;
}
if (X == null)
{
return false;
}
if (Y == null)
{
return true;
}
return X.itemPrice > Y.itemPrice;
}
public static bool operator <(Item X, Item Y)
{
if (X == null && Y == null)
{
return false;
}
if (X == null)
{
return true;
}
if (Y == null)
{
return false;
}
return X.itemPrice < Y.itemPrice;
}
}
Populate some value to the collection:
Item[] items = { new Item { itemName="Item1", itemPrice=10 },
new Item { itemName="Item2", itemPrice=20 },
new Item { itemName="Item3", itemPrice=30 },
new Item { itemName="Item4", itemPrice=40 } };
Get the Minimum number greater than a certain value OR Maximum number lesser than a certain value:
int min = items.Min().itemPrice;
int min = items.Where(p => p > items[1]).DefaultIfEmpty().Min().itemPrice);
int min = items.Max().itemPrice;
int min = items.Where(p => p < items[2]).DefaultIfEmpty().Max().itemPrice);
Similarly, we can also get the element at each index:
Item secondLowest = numbers.OrderBy(num => num).ElementAt(1);
Item secondHighest = numbers.OrderBy(num => num).Reverse().ElementAt(1);
CodeProject
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.