All .net developers know that LINQ can be used to conveniently extract and process data from arrays, enumerable classes, XML documents, relational databases, and third-party data sources. These concepts are adopted by other programming languages such as Java, Javascript, Ruby etc.
var cityWiseSalary = from comp in ListCompany select new { comp.Name, Emp = (from emp in comp.ListEmp group emp by emp.Address.City into CityWiseEmp select new { State = CityWiseEmp.Key, TotalSalary = CityWiseEmp.Sum(emp => emp.salary) }) };
There is no reason that we can’t port it to Objective-C. By using LinqToObjectiveC, we could write Objective-C code like:
NSArray* input = @[@"Frank", @"Jim", @"Bob"]; NSDictionary* dictionary = [input linq_toDictionaryWithKeySelector:^id(id item) { return [item substringToIndex:1]; } valueSelector:^id(id item) { return [item lowercaseString]; }]; // result: // ( // F = frank; // J = jim; // B = bob; // )
Comparing to the old school KVC way:
NSArray *payees = [arrayOfTransactionsArrays valueForKeyPath:@"@distinctUnionOfArrays.payee"];
The API is not so intuitive, and not composable, is it?