Skip to content

ES CSharp Keyword on

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C#: on

Manual C# · Guía Práctica

Especifica la tecla izquierda LINQ unirse antes de igual.

Ejemplo sencillo (Example.cs)

Guarde este ejemplo por separado como Example.cs. Ejecútelo independientemente de los demás ejemplos de esta página.

Example.cs:

// PROJECT-EXAMPLE
using System.Linq;
int[] values = [1, 2, 3];
var result = from n in values join other in new[] { 2 } on n equals other select n;
System.Console.WriteLine(string.Join(",", result));

Resultado:

2

Sintaxis

join ... on leftKey equals rightKey

La consulta generalmente se ejecuta con retraso durante el recorrido. ToArray/ToList captura el resultado en una nueva colección.

Ejemplo 1: forma básica

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        var items = new[] { new { Id = 1, Name = "ore" }, new { Id = 2, Name = "wood" } };
        var counts = new[] { new { Id = 1, Count = 4 }, new { Id = 2, Count = 2 } };
        var query = from item in items
                    join count in counts on item.Id equals count.Id
                    let total = count.Count * 2
                    where total > 3
                    orderby total descending, item.Name ascending
                    select new { item.Name, Total = total };
        foreach (var item in query) Console.WriteLine($"{item.Name}:{item.Total}");
    }
}

Ejemplo 2: otra forma práctica

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        var owners = new[] { new { Id = 1, Name = "A" }, new { Id = 2, Name = "B" } };
        var items = new[] { new { OwnerId = 1, Name = "ore" } };
        var query = from owner in owners
                    join item in items on owner.Id equals item.OwnerId into owned
                    from item in owned.DefaultIfEmpty()
                    select $"{owner.Name}:{item?.Name ?? "empty"}";
        foreach (string text in query) Console.WriteLine(text);
    }
}

Fuente oficial: Microsoft Aprender.

Clone this wiki locally