LoginSignup
9
8

More than 5 years have passed since last update.

C#とLINQで直積集合

Posted at

C#をかじり始めました。LINQがなかなか面白そうだったので、試しに直積集合を作ってみました。
直積集合とは2つの集合$A, B$から次のように作られる集合です:

\left\{ (a, b) \mid {a \in A} \wedge {b \in B} \right\}

ペアの集合だけではつまらないので、九九表を出力するプログラムにしました:

Test.cs
using System;
using System.Linq;

public class Test
{
    public static void Main()
    {
        var e = Enumerable.Range(1, 9);
        var qq = from n in e from m in e select new {x = n, y = m, z = n*m};
        foreach (var x in qq) Console.WriteLine(x.ToString());
    }
}

fromを2つ重ねています。このクエリ式は下のSelectMany拡張メソッドを使用した式と等価なようです。

Test.cs
using System;
using System.Linq;

public class Test
{
    public static void Main()
    {
        var e = Enumerable.Range(1, 9);
        var qq = e.SelectMany(n => e, (n, m) => new { x = n, y = m, z = n * m });
        foreach (var x in qq) Console.WriteLine(x.ToString());
    }
}

以上。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8