0

すべてのセットの要素が最終的な組み合わせで固定された場所になるように、4 つのセット要素のさまざまな組み合わせを生成できる方法を探しています。探しています:

Set#1(Street Pre Direction) { N, S } Set#2(Street Name) {Frankford, Baily} Set#3(Street Type) {Ave, St} Set#4(Street Post Direction) {S}

予想される組み合わせをいくつか挙げてみましょう:
N Baily Ave S
S Frankford St S
S Baily Av S
.
.
.

すべてのセットの要素がその場所に配置されていることがわかるように、
Pre Direction は Place 1 の
通りの名前は Place 2 の通り
のタイプは Place 3 の
通りの説明は Place 4 にあります

私はこのタスクを実行する最も効率的な方法を探しています。それを行う 1 つの方法は、次のように一度に 2 つのセットで作業することです:
セット 1 とセット 2 の組み合わせを作成 --> 結果の組み合わせの新しいセット 5 を作成します
。セット 5 とセット 3 の組み合わせ --> 結果の組み合わせの新しいセット 6 を作成します
セット 6 とセット 4 の組み合わせを作成します --> これにより、最終的な組み合わせが得られます

これを行う最善の方法はありますか?親切に助けてください。私は C# または Java を好みます。

ありがとう

4

3 に答える 3

2

これは、すべての組み合わせを提供するlinq(c#)です。これは「最も効率的な方法」ではありません。

var query =
  from d in predirections
  from n in names
  from t in types
  from s in postdirections
  select new {d, n, t, s};
于 2009-05-29T03:25:05.100 に答える
1

いくつかのセットのデカルト積を探しているようです。ネストされた for ループを使用して実行できます。これは、あなたが求めていない Haskell コードです。

Prelude> [[x,y] | x <- ['1'..'3'], y <- ['A'..'C']]
["1A","1B","1C","2A","2B","2C","3A","3B","3C"]
于 2009-05-29T03:09:00.670 に答える
0

@ David B predirections リストが空の場合、どの方法でもデカルト積が返されないため、組み合わせを取得する方法はありますか。


ここにデビッドB:

var query =
  from d in predirections.DefaultIfEmpty()
  from n in names.DefaultIfEmpty()
  from t in types.DefaultIfEmpty()
  from s in postdirections.DefaultIfEmpty()
  select new {d, n, t, s};
于 2009-05-29T18:18:50.880 に答える