h5

LINQ Support

h5 provides comprehensive support for Language Integrated Query (LINQ), allowing you to write powerful queries over collections in C# that are compiled efficiently to JavaScript.

Getting Started

To use LINQ, simply import the System.Linq namespace:

using System.Linq;

This makes all standard LINQ extension methods available on IEnumerable<T>, List<T>, arrays, and other collection types.

Supported Operators

Most standard query operators are supported, including:

  • Filtering: Where, OfType
  • Projection: Select, SelectMany
  • Sorting: OrderBy, OrderByDescending, ThenBy, ThenByDescending
  • Grouping: GroupBy
  • Joins: Join, GroupJoin
  • Aggregation: Count, Sum, Min, Max, Average, Aggregate
  • Set Operations: Distinct, Union, Intersect, Except
  • Element Operations: First, FirstOrDefault, Last, LastOrDefault, Single, SingleOrDefault, ElementAt
  • Conversion: ToArray, ToList, ToDictionary, ToLookup
  • Quantifiers: Any, All, Contains

Example

var numbers = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

var evenSquares = numbers
    .Where(n => n % 2 == 0)
    .Select(n => n * n)
    .OrderByDescending(n => n)
    .ToList();

// Output: 100, 64, 36, 16, 4
foreach (var square in evenSquares)
{
    Console.WriteLine(square);
}

Performance Considerations

While LINQ provides expressive syntax, keep in mind that JavaScript engines are optimized for imperative loops (for, forEach). For extremely performance-critical sections (e.g., game loops or heavy data processing), consider using standard loops instead of LINQ if profiling shows a bottleneck.

However, for most application logic, the readability and maintainability benefits of LINQ outweigh minor performance differences.

LINQ to Objects vs LINQ to SQL

Currently, h5 primarily supports LINQ to Objects. If you need to query a database or remote API using LINQ syntax, you would typically fetch the data first (e.g., as JSON) and then query it in memory using LINQ to Objects.

© 2026 h5. All rights reserved.