如何在 C# 控制台应用程序中显示模型列表
How to display a list of a model in a C# console application
我是 C# 的新手,我一直在努力做到以下几点:
我正在尝试在控制台应用程序中列出一个列表,我有一个名为“TeamModel”的模型
public class TeamModel
{
public int Id { get; set; }
public string TeamName { get; set; }
public List<PersonModel> TeamMembers { get; set; } = new List<PersonModel>();
public TeamModel()
{
}
}
在我的主要 class 我有以下内容:
class Program
{
static void Main(string[] args)
{
List<TeamModel> TeamOne = new List<TeamModel>(){new TeamModel() { Id =1, TeamName = "x's Team", TeamMembers = null}};
List<TeamModel> TeamTwo = new List<TeamModel>(){new TeamModel() { Id =2, TeamName = "y's Team", TeamMembers = null}};
List<TeamModel> TeamThree = new List<TeamModel>(){new TeamModel() { Id =3, TeamName = "z's Team", TeamMembers = null}};
List<List<TeamModel>> listOfTeams = new List<List<TeamModel>> (){TeamOne,TeamTwo,TeamThree};
foreach (List<TeamModel> list in listOfTeams)
{
Console.WriteLine(list);
}
}
}
现在,当我 运行 程序时,我希望结果是:
1,x的团队,
2,y的团队,
3,z的团队
我得到的是
System.Collections.Generic.List`1[TeamModel]
System.Collections.Generic.List`1[TeamModel]
System.Collections.Generic.List`1[TeamModel]
如果我将 foreach 更改为:
foreach (List<TeamModel> list in listOfTeams)
{
Console.WriteLine(String.Join(", ", list));
}
我明白了:
团队模型
团队模型
团队模型
您可以使用
来实现
foreach (List<TeamModel> list in listOfTeams)
{
foreach (var team in list)
{
Console.WriteLine(team.Id + " " + team.Name);
}
}
使用 Linq
您可以使用 .SelectMany()
展平嵌套列表,然后您可以遍历展平列表或者将其转换为字符串列表然后打印。
Projects each element of a sequence to an IEnumerable and flattens
the resulting sequences into one sequence.
var strTeamDetails = listOfTeams
.SelectMany(teams => teams) //Flatten the List.
.Select(individualTeam => $"{individualTeam.Id} {individualTeam.Name}"); //Convert to IEnumearable of string
Console.WriteLine(string.Join(",\n", strTeamDetails)); //Print
您可能需要为您的团队模型考虑 overriding the ToString() 方法 class;
来自上面的link;
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return "Person: " + Name + " " + Age;
}
}
您可以测试 ToString 方法,如以下代码示例所示:
Person person = new Person { Name = "John", Age = 12 };
Console.WriteLine(person);
// Output:
// Person: John 12
考虑到每个“列表”都包含一个团队,是否有理由将 TeamOne、TeamTwo 和 TeamThree 创建为列表?以下实现将实现您所说的预期输出:
static void Main(string[] args)
{
TeamModel TeamOne = new TeamModel { Id = 1, TeamName = "x's Team", TeamMembers = null };
TeamModel TeamTwo = new TeamModel { Id = 2, TeamName = "y's Team", TeamMembers = null };
TeamModel TeamThree = new TeamModel { Id = 3, TeamName = "z's Team", TeamMembers = null };
List<TeamModel> listOfTeams = new List<TeamModel> { TeamOne, TeamTwo, TeamThree };
foreach (TeamModel team in listOfTeams)
{
Console.WriteLine($"{team.Id}. {team.TeamName}");
}
}
如果您真的需要一个列表列表,那么下面的实现就可以了。与您自己的解决方案的唯一区别是在您拥有的解决方案中多了一个 foreach
:
static void Main(string[] args)
{
List<TeamModel> TeamOne = new List<TeamModel>() { new TeamModel() { Id = 1, TeamName = "x's Team", TeamMembers = null } };
List<TeamModel> TeamTwo = new List<TeamModel>() { new TeamModel() { Id = 2, TeamName = "y's Team", TeamMembers = null } };
List<TeamModel> TeamThree = new List<TeamModel>() { new TeamModel() { Id = 3, TeamName = "z's Team", TeamMembers = null } };
List<List<TeamModel>> listOfTeams = new List<List<TeamModel>>() { TeamOne, TeamTwo, TeamThree };
foreach (List<TeamModel> list in listOfTeams)
{
foreach (TeamModel team in list)
{
Console.WriteLine($"{team.Id}. {team.TeamName}");
}
}
}
我是 C# 的新手,我一直在努力做到以下几点: 我正在尝试在控制台应用程序中列出一个列表,我有一个名为“TeamModel”的模型
public class TeamModel
{
public int Id { get; set; }
public string TeamName { get; set; }
public List<PersonModel> TeamMembers { get; set; } = new List<PersonModel>();
public TeamModel()
{
}
}
在我的主要 class 我有以下内容:
class Program
{
static void Main(string[] args)
{
List<TeamModel> TeamOne = new List<TeamModel>(){new TeamModel() { Id =1, TeamName = "x's Team", TeamMembers = null}};
List<TeamModel> TeamTwo = new List<TeamModel>(){new TeamModel() { Id =2, TeamName = "y's Team", TeamMembers = null}};
List<TeamModel> TeamThree = new List<TeamModel>(){new TeamModel() { Id =3, TeamName = "z's Team", TeamMembers = null}};
List<List<TeamModel>> listOfTeams = new List<List<TeamModel>> (){TeamOne,TeamTwo,TeamThree};
foreach (List<TeamModel> list in listOfTeams)
{
Console.WriteLine(list);
}
}
}
现在,当我 运行 程序时,我希望结果是:
1,x的团队,
2,y的团队,
3,z的团队
我得到的是
System.Collections.Generic.List`1[TeamModel]
System.Collections.Generic.List`1[TeamModel]
System.Collections.Generic.List`1[TeamModel]
如果我将 foreach 更改为:
foreach (List<TeamModel> list in listOfTeams)
{
Console.WriteLine(String.Join(", ", list));
}
我明白了:
团队模型
团队模型
团队模型
您可以使用
来实现foreach (List<TeamModel> list in listOfTeams)
{
foreach (var team in list)
{
Console.WriteLine(team.Id + " " + team.Name);
}
}
使用 Linq
您可以使用 .SelectMany()
展平嵌套列表,然后您可以遍历展平列表或者将其转换为字符串列表然后打印。
Projects each element of a sequence to an IEnumerable and flattens the resulting sequences into one sequence.
var strTeamDetails = listOfTeams
.SelectMany(teams => teams) //Flatten the List.
.Select(individualTeam => $"{individualTeam.Id} {individualTeam.Name}"); //Convert to IEnumearable of string
Console.WriteLine(string.Join(",\n", strTeamDetails)); //Print
您可能需要为您的团队模型考虑 overriding the ToString() 方法 class;
来自上面的link;
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return "Person: " + Name + " " + Age;
}
}
您可以测试 ToString 方法,如以下代码示例所示:
Person person = new Person { Name = "John", Age = 12 };
Console.WriteLine(person);
// Output:
// Person: John 12
考虑到每个“列表”都包含一个团队,是否有理由将 TeamOne、TeamTwo 和 TeamThree 创建为列表?以下实现将实现您所说的预期输出:
static void Main(string[] args)
{
TeamModel TeamOne = new TeamModel { Id = 1, TeamName = "x's Team", TeamMembers = null };
TeamModel TeamTwo = new TeamModel { Id = 2, TeamName = "y's Team", TeamMembers = null };
TeamModel TeamThree = new TeamModel { Id = 3, TeamName = "z's Team", TeamMembers = null };
List<TeamModel> listOfTeams = new List<TeamModel> { TeamOne, TeamTwo, TeamThree };
foreach (TeamModel team in listOfTeams)
{
Console.WriteLine($"{team.Id}. {team.TeamName}");
}
}
如果您真的需要一个列表列表,那么下面的实现就可以了。与您自己的解决方案的唯一区别是在您拥有的解决方案中多了一个 foreach
:
static void Main(string[] args)
{
List<TeamModel> TeamOne = new List<TeamModel>() { new TeamModel() { Id = 1, TeamName = "x's Team", TeamMembers = null } };
List<TeamModel> TeamTwo = new List<TeamModel>() { new TeamModel() { Id = 2, TeamName = "y's Team", TeamMembers = null } };
List<TeamModel> TeamThree = new List<TeamModel>() { new TeamModel() { Id = 3, TeamName = "z's Team", TeamMembers = null } };
List<List<TeamModel>> listOfTeams = new List<List<TeamModel>>() { TeamOne, TeamTwo, TeamThree };
foreach (List<TeamModel> list in listOfTeams)
{
foreach (TeamModel team in list)
{
Console.WriteLine($"{team.Id}. {team.TeamName}");
}
}
}