1

I have 2 classes associated with one and other, a Town has many People in it.

public class Town
{
    List<People> collectionOfPeople;

    public string town { get; set; }

    public Town()
    {
        townName = "";

        collectionOfPeople = new List<People>();
        collectionOfPeople.Add(new People());
    }

    public Town(string tmp_townName)
    {
        townName = tmp_townName;

        collectionOfPeople = new List<People>();
        collectionOfPeople.Add(new People("Daniel Smith", "22"));
    }
}

After constructing an instance of a Town in a List, and a record associated with it I'd like to display the result on a Form.

    private int numberOfPeople;
    private int currentPeopleShown;
    private int numberOfTown;
    private int currentTown;
    private List<People> peopleList;
    private List<Town> townList;

    // ************************* Methods/Functionality
    private void LoadData()
    {
        txt_townName.Text = (townList[0]).townName;
        txt_peopleName.Text = (peopleList[currentPeopleShown]).name;

        numberOfPeople = peopleList.Count();
        currentPeopleShown = 0;
    }

How would I reference a List inside a List, to display or count the number of records within it (town0 .. show people1, 2, 3 etc)?

4

3 に答える 3

1

リストをプロパティとして公開する必要があります

public List<People> CollectionOfPeople { get; set; }
^                                      ^ ^    ^    ^

そして、次のように参照します。

var people = myTown.CollectionOfPeople;
于 2013-04-15T18:22:11.817 に答える
0

リスト内のリストを参照して、リスト内のレコード数を表示またはカウントするにはどうすればよいですか。(town0 .. show people1,2,3 など)

foreach (Town town in townList)
  foreach (People people in town.collectionOfPeople)
    MessageBox.Show(people.Name);
于 2013-04-15T18:23:40.027 に答える
0

SelectMany(...) を使用して、ネストされたすべてのアイテムを単一の enumberable にマージできます

townList.SelectMany(t=>t.collectionOfPeople).Count();
于 2013-04-15T18:22:00.137 に答える