151 クロス結合は、単に2つのセットのデカルト積です。明示的な結合演算子はありません。 var combo =人のpから 車のcから 新規を選択 { p.Name、 c。メイク、 c。モデル、 c。カラー }; — スティーブ・モーガン ソース 2 それfrom p in people from c in carsをラムダ表記でどのように書くのですか? — スポーツ 47 people.SelectMany(p => cars, (p, c) => new { ... }) — Iain Galloway
38 linq拡張メソッドで同じこと: var names = new string[] { "Ana", "Raz", "John" }; var numbers = new int[] { 1, 2, 3 }; var newList=names.SelectMany( x => numbers, (y, z) => { return y + z + " test "; }); foreach (var item in newList) { Console.WriteLine(item); } — Rzv.im ソース
25 スティーブの回答に基づくと、最も単純な表現は次のようになります。 var combo = from Person in people from Car in cars select new {Person, Car}; — マーク・シダーデ ソース
11 A Tupleはデカルト積に適したタイプです。 public static IEnumerable<Tuple<T1, T2>> CrossJoin<T1, T2>(IEnumerable<T1> sequence1, IEnumerable<T2> sequence2) { return sequence1.SelectMany(t1 => sequence2.Select(t2 => Tuple.Create(t1, t2))); } — アモス ソース
6 拡張方法: public static IEnumerable<Tuple<T1, T2>> CrossJoin<T1, T2>(this IEnumerable<T1> sequence1, IEnumerable<T2> sequence2) { return sequence1.SelectMany(t1 => sequence2.Select(t2 => Tuple.Create(t1, t2))); } そして次のように使用します: vals1.CrossJoin(vals2) — デニス ソース
from p in people from c in cars
をラムダ表記でどのように書くのですか?