假设我有一个对象,其中包含一个人的姓名和他们的原籍城市。
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 有一种优雅的方法可以做到这一点,有人可以解释一下吗?