Example 2
How to use Enumerable methods such as First, FirstOrDefault, Last,
LastOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, Count, Contains, Sum, Min, Max.
program LinqWithEnumerableInterface;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
CNClrLib.Host,
CNClrLib.Host.Helper,
CNClrLib.Collections,
CNClrLib.DynamicLinq,
CNClrLib.Linq,
CNClrLib.Core;
var
Console: _Console;
IntList: _GenericList;
intType: _Type;
Enumerable: _Enumerable;
ListEnumerable: _GenericIEnumerable;
I: Integer;
begin
Console := CoConsole.CreateInstance;
//Integer Type
intType := TClrAssembly.GetType('System.Int32');
//Integer Collections
IntList := CoGenericList.CreateInstance(intType);
IntList.Add(33);
IntList.Add(45);
IntList.Add(50);
IntList.Add(45);
IntList.Add(34);
IntList.Add(23);
IntList.Add(67);
Console.WriteLine_14('Elements in the List:');
for I := 0 to IntList.Count - 1 do
Console.WriteLine_8(IntList[I]);
//Get GenericIEnumerable from the GenericList
ListEnumerable := IntList.AsGenericIEnumerable;
Enumerable := CoEnumerable.CreateInstance;
Console.WriteLine_14('Enumerable Interface Methods: ');
Console.WriteLine_15('First: {0}', Enumerable.First(intType, ListEnumerable));
Console.WriteLine_15('FirstOrDefault: {0}', Enumerable.FirstOrDefault(intType, ListEnumerable));
Console.WriteLine_15('Last: {0}', Enumerable.Last(intType, ListEnumerable));
Console.WriteLine_15('LastOrDefault: {0}', Enumerable.LastOrDefault(intType, ListEnumerable));
try
Console.WriteLine_15('Single: {0}', Enumerable.Single(intType, ListEnumerable));
except
on E: Exception do
Console.WriteLine_15('Single: {0}', E.Message);
end;
try
Console.WriteLine_15('SingleOrDefault: {0}', Enumerable.SingleOrDefault(intType, ListEnumerable));
except
on E: Exception do
Console.WriteLine_15('SingleOrDefault: {0}', E.Message);
end;
Console.WriteLine_15('ElementAt: {0}', Enumerable.ElementAt(intType, ListEnumerable, 4));
Console.WriteLine_15('ElementAtOrDefault: {0}', Enumerable.ElementAtOrDefault(intType, ListEnumerable, 5));
Console.WriteLine_15('Count: {0}', Enumerable.Count(intType, ListEnumerable));
Console.WriteLine_15('Contains: {0}', Enumerable.Contains(intType, ListEnumerable, 30));
Console.WriteLine_15('Contains: {0}', Enumerable.Contains(intType, ListEnumerable, 34));
Console.WriteLine_15('Sum: {0}', Enumerable.Sum(ListEnumerable));
Console.WriteLine_15('Min: {0}', Enumerable.Min(ListEnumerable));
Console.WriteLine_15('Min with Int32 Type:{0}', Enumerable.Min_1(intType, ListEnumerable));
Console.WriteLine_15('Max: {0}', Enumerable.Max(ListEnumerable));
Console.WriteLine_15('Max with Int32 Type:{0}', Enumerable.Max_1(intType, ListEnumerable));
Console.WriteLine_15('Average: {0}', Enumerable.Average(ListEnumerable));
Console.ReadLine();
end.