C# 填充列表<;T>;来自多个阵列
因此,基本上我需要用数组而不是手工填充当前列表:C# 填充列表<;T>;来自多个阵列,c#,arrays,list,populate,C#,Arrays,List,Populate,因此,基本上我需要用数组而不是手工填充当前列表: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); List<People> people = new List<People>() { new Pe
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<People> people = new List<People>()
{
new People{Name="John",Age=21,Email="john@abc.com"}
new People{Name="Tom",Age=30,Email="tom@abc.com"}
};
}
}
我想改为使用数组,从类人员到类主窗口。比如:
class People
{
public string[] Name =
{
"John",
"Tom",
};
public int[] Age =
{
"21",
"30",
}
...
}
我似乎不知道如何使用这些数组来计算这个列表。提前感谢您的时间。其中一个
Select
重载参数为index
var names = new[]{ "John", "Tom" };
var ages = new[]{ 21, 30, };
var mails = new[]{ "mail1", "mail2", };
names.Select((name, index) =>
new People{
Name = name,
Age = ages[index],
Email = mails[index]})
.Dump();
印刷品:
Name Age Email
John 21 mail1
Tom 30 mail2
您需要确保所有阵列的大小都相同
如果您将“数据”设置为静态会更好
我们可以做
intc=Math.Min(people.Name.Count,people.Age.Count,…)编码>以获得更好的“符号化”如果这是预填充集合,则有很多方法可以做到这一点
public static class PeopleListFactory
{
public static IEnumerable<People> Content(int someindicator)
{
List<People> result = new List<People>();
switch (someIndicator)
{
case 0: // fill it in here with and from whatever you like.
break;
}
return result;
}
}
公共静态类PeopleListFactory
{
公共静态IEnumerable内容(int-someindicator)
{
列表结果=新列表();
开关(指示灯)
{
案例0://在此处填写您喜欢的内容。
打破
}
返回结果;
}
}
然后以你的主要形式
只是
列表人员=新列表(PeopleListFactory.Content(0)) 只是出于好奇,你有什么理由在类中使用数组而不是列表。不是批评,只是好奇。我只想把姓名、年龄等放在不同的数组中,然后把它们放在同一个列表中。我只是不知道还有什么更好的。使用类内人员列表会更好吗?人员
有多个姓名
和年龄
没有意义。你目前的做法是“正确”的。您可以使用一个简单的for
循环,从姓名、年龄和电子邮件的单独数组中创建人。@user2008147不是因为您的方式,不是。我只是好奇您的理由在我看来,正确的方法是在People类中有一个列表,但这只是我的观点,这似乎是最好的选择之一。考虑到对象初始化的格式设置和删除冗余的()
-这将是最佳解决方案。如果能够使用您的解决方案使其正常工作,非常感谢polkduran和其他帮助您的人!干杯@塞德里克比农同意。你说的对称是指波尔克杜兰写的东西吗?这正是我的意思。好吧,但有一点需要注意:他使用people.Name.Count代码>这带来了一点不对称的方面。别误会我的意思-我更喜欢他的解决方案而不是我的,但我认为在当前的环境中没有什么好的解决方案在这种情况下:int c=Math.Min(people.Name.Count,people.Age.Count,…)代码>以获得更好的符号
int c = people.Name.Count;
Enumerable.Range(0,c).Select(i => new People(){Name = people.Name[i], Age = people.Age[i], ...});
public static class PeopleListFactory
{
public static IEnumerable<People> Content(int someindicator)
{
List<People> result = new List<People>();
switch (someIndicator)
{
case 0: // fill it in here with and from whatever you like.
break;
}
return result;
}
}