複数のデータソースを使用する
プログラミングC# 第6版 8.3.5.2
複数のデータソースを処理する。fromをつなげて処理する感じですね。
using System; using System.Linq; class Program { static void Main() { int[][] nums = new int[][] { new int[]{1,2,3}, new int[]{10,20,30}, new int[]{100,200,300}, }; var ret = from n1 in nums from n2 in n1 select n2; foreach(var n in ret) { Console.WriteLine("{0}",n); } } }
$ main 1 2 3 10 20 30 100 200 300
例としては微妙ですが、単にジャグ配列を全表示してるだけですね。
他の例として
using System; using System.Linq; class Program { static void Main() { int[] nums1 = new int[] {1,2,3,4,5}; int[] nums2 = new int[] {5,6,7}; // 二つの配列の加算 var ret = from n1 in nums1 from n2 in nums2 select n1 + n2; foreach(var n in ret) { Console.WriteLine("{0}",n); } } }
$ main 6 7 8 7 8 9 8 9 10 9 10 11 10 11 12
こんなかんじ。
メソッドを使う場合はSelectManyを利用する。
上記処理をSelectManyで書き直すと
// 二つの配列の加算
var ret = nums1.SelectMany( x => nums2, (x,y) => x + y );
こうなる。