使用不同的数据组合填充网格的数据源




我有一个关于填充网格的问题。
好了,
假设我们有一个网格,用于打印篮球队的一些数据。
我们有四个主要的类:

public class Player
{
    public string PlayerName { get; set; }
}
public class Staff
{
    public string StaffName { get; set; }
}
public class Fan
{
    public string FanName { get; set; }
    public List<string> FanFavoriteTeam { get; set; }
}
public class Team
{
    public string TeamName { get; set; }
    public List<Player> Players { get; set; }
    public List<Staff> Staff { get; set; }
    public List<Fan> Fans { get; set; }
}

…当然还有填充网格的class

public class Result
{
    public string TeamName { get; set; }
    public string PlayerName { get; set; }
    public string StaffName { get; set; }
    public string FanName { get; set; }
    public string FanFavoriteTeam { get; set; }
}

我想打印所有可能的组合,例如,假设我们有这样的数据:
球队名称-金州勇士队球员:斯蒂芬·库里,凯文·杜兰特
员工-史蒂夫·科尔,阿尔文·金特里,罗恩·亚当斯球迷:杜克·阿拉德(凯尔特人,湖人),多里安·梅西,拉蒙特·科林伍德

Grid应该打印这个信息:

1st row)Golden State - Stephen Curry - Steve Kerr - Duke Allard - Celtics
2)Golden State - Stephen Curry - Steve Kerr - Duke Allard - Lakers
3)Golden State - Stephen Curry - Steve Kerr - Dorian Macy
4)Golden State - Stephen Curry - Steve Kerr - Lamont Collingwood
5)Golden State - Stephen Curry - Alvin Gentry - Duke Allard - Celtics
6)Golden State - Stephen Curry - Alvin Gentry - Duke Allard - Lakers
7)Golden State - Stephen Curry - Alvin Gentry - Dorian Macy
8)Golden State - Stephen Curry - Alvin Gentry - Lamont Collingwood
9)Golden State - Stephen Curry - Ron Adams - Duke Allard - Celtics
10)Golden State - Stephen Curry - Ron Adams - Duke Allard - Lakers
11)Golden State - Stephen Curry - Ron Adams - Dorian Macy
12)Golden State - Stephen Curry - Ron Adams - Lamont Collingwood
13)Golden State - Kevin Durant - Steve Kerr - Duke Allard - Celtics
14)Golden State - Kevin Durant - Steve Kerr - Duke Allard - Lakers
15)Golden State - Kevin Durant - Steve Kerr - Dorian Macy
16)Golden State - Kevin Durant - Steve Kerr - Lamont Collingwood
17)Golden State - Kevin Durant - Alvin Gentry - Duke Allard - Celtics
18)Golden State - Kevin Durant - Alvin Gentry - Duke Allard - Lakers
19)Golden State - Kevin Durant - Alvin Gentry - Dorian Macy
20)Golden State - Kevin Durant - Alvin Gentry - Lamont Collingwood
21)Golden State - Kevin Durant - Ron Adams - Duke Allard - Celtics
22)Golden State - Kevin Durant - Ron Adams - Duke Allard - Lakers
23)Golden State - Kevin Durant - Ron Adams - Dorian Macy
24)Golden State - Kevin Durant - Ron Adams - Lamont Collingwood

注:我想要实现这一点,而不是链式foreach语句
P.P.S.很抱歉有这么长的描述

您可以使用LINQ为您执行循环:

var result = from t in teams
             from p in players
             from s in staff
             from f in fans
             select new Result {
               TeamName = t.TeamName,
               PlayerName = p.PlayerName,
               StaffName = s.StaffName,
               FanName = f.FanName,
             }

这基本上是对表格进行交叉连接,没有任何限制,因此每个团队都与每个球员,工作人员和球迷相匹配,并且我们得到了数据的笛卡尔积。

最新更新