人名とその出身地を含むオブジェクトがあるとします。CでLINQを使用してグループ化されたリストの組み合わせを検索する#
public class personDetails
{
public string City;
public string Name;
}
また、次のエントリが追加されたリストがあります。
Name City
John | London
Jane | London
Tom | New York
Bob | New York
Fred | New York
私が探しているのは、都市別に分類されたすべての名前の組み合わせです。
John Tom
John Bob
John Fred
Jane Tom
Jane Bob
Jane Fred
私は事前にグループの数を知っていれば、私はしかし、これが唯一の私は、事前にグループの数を知っていれば動作し、すぐに次のコード
List<personDetails> personList = new List<personDetails>();
//populate list
var groupedPersons = personList.GroupBy(c => c.City);
foreach (var item1 in groupedPersons[0])
{
foreach (var item2 in groupedPersons[1])
{
Console.WriteLine(item1.Name + " " + item2.Name);
}
}
を使用することにより、これを行うことができますグループの量が大きくなると扱いにくくなります。私はLINQを使ってこれを行うエレガントな方法があると確信しています。だれかが光を当てることができますか?
はこの答えhttp://stackoverflow.com/questions/9168269/permutation-algorithms-in-c-sharpを見てみましょう。あなたはあなた自身のリストに参加することができます。 – Brad
@Bradこれは、2つの都市でリストされている例ではうまくいくでしょう。 OPが望んでいるのは、N次元のクロス積であり、Nは実行時まで知られていない。そのコードスニペットはそれを提供しません。 – Servy