如何根据一个属性用一个文本文件填充两个列表?
How do you populate two Lists with one text file based on an attribute?
我有一个包含 40000 行数据的文本文件。
数据格式如下:
Anna,F,98273
Christopher,M,2736
Robert,M,827
Mary,F,7264
Anthony,M,8
...
我想基于一个字符值创建两个列表。 char 表示性别,我想创建一个 "female (f)" 列表和一个 "male (m)" 列表。 如何根据这个字符值从一个文件创建两个列表?
我有一个 class 已经设置了构造函数来创建所有数据的列表。我已经成功创建了一个列表,并且能够根据任何给定的属性对其进行排序。如果创建两个列表不是组织此数据的最佳方式,请给我替代方案。
我想过将所有数据编译成一个列表,然后根据字符对它进行排序,所以女性在前,然后是男性。然后我将不得不根据与名称关联的数字对其进行排序。我 运行 到这里的问题是我需要显示前 10 个(任何给定的 int 在这里工作,因为它将由用户输入)数字最高的女性名字以及数字最高的男性名字。我不确定如何调用这些值,因为如果两个性别都在同一个列表中,我不能(据我所知)使用索引来指示排名。对我来说,这种方法似乎比简单地创建两个列表要复杂得多,并不理想。
根据评论中的建议,部分@Charles_May's:
简单循环:
List<string> Source = {}; //source list
List<string> Females = new List<string>(), Males = new List<string>();
foreach (string value in Source)
{
if (value.ToUpper().Contains(",F,")) //Female
{
Females.Add(value);
}
else
{
Males.Add(value);
}
}//result: both lists are with values
就是这样。
如果你想让它更短:
string filename = "textfilename.text" //file name to open
List<string> Females = new List<string>(), Males = new List<string>();
foreach (string line in File.ReadLines()) //openning file
{
if (line.ToUpper().Contains(",F,")) //Female
{
Females.Add(line);
}
else
{
Males.Add(line);
}
}//same result
要获取其他属性,也许您想使用方法 String.Split(',')
返回数组(在您的情况下为字符串 [3])
我有一个包含 40000 行数据的文本文件。
数据格式如下:
Anna,F,98273
Christopher,M,2736
Robert,M,827
Mary,F,7264
Anthony,M,8
...
我想基于一个字符值创建两个列表。 char 表示性别,我想创建一个 "female (f)" 列表和一个 "male (m)" 列表。 如何根据这个字符值从一个文件创建两个列表?
我有一个 class 已经设置了构造函数来创建所有数据的列表。我已经成功创建了一个列表,并且能够根据任何给定的属性对其进行排序。如果创建两个列表不是组织此数据的最佳方式,请给我替代方案。
我想过将所有数据编译成一个列表,然后根据字符对它进行排序,所以女性在前,然后是男性。然后我将不得不根据与名称关联的数字对其进行排序。我 运行 到这里的问题是我需要显示前 10 个(任何给定的 int 在这里工作,因为它将由用户输入)数字最高的女性名字以及数字最高的男性名字。我不确定如何调用这些值,因为如果两个性别都在同一个列表中,我不能(据我所知)使用索引来指示排名。对我来说,这种方法似乎比简单地创建两个列表要复杂得多,并不理想。
根据评论中的建议,部分@Charles_May's:
简单循环:
List<string> Source = {}; //source list
List<string> Females = new List<string>(), Males = new List<string>();
foreach (string value in Source)
{
if (value.ToUpper().Contains(",F,")) //Female
{
Females.Add(value);
}
else
{
Males.Add(value);
}
}//result: both lists are with values
就是这样。 如果你想让它更短:
string filename = "textfilename.text" //file name to open
List<string> Females = new List<string>(), Males = new List<string>();
foreach (string line in File.ReadLines()) //openning file
{
if (line.ToUpper().Contains(",F,")) //Female
{
Females.Add(line);
}
else
{
Males.Add(line);
}
}//same result
要获取其他属性,也许您想使用方法 String.Split(',')
返回数组(在您的情况下为字符串 [3])