我有一个包含40000行数据的文本文件。
数据格式如下:
Anna,F,98273
Christopher,M,2736
Robert,M,827
Mary,F,7264
Anthony,M,8
...
我想基于char值创建两个列表。 char表示性别,我想创建一个“女性(f)”列表和“男性(男)”列表。如何根据此char值从一个文件创建两个列表?
我有一个类已经设置了一个构造函数来创建所有数据的List。我已经成功创建了一个List,并且能够根据任何给定的属性对其进行排序。如果创建两个列表不是组织此数据的最佳方式,请给我替代方案。
我曾考虑将所有数据编译成一个List,然后根据char对其进行排序,这样女性首先是男性。然后我必须根据与名称相关的数字对其进行排序。我遇到的问题是我需要显示前10名(任何给定的int在这里工作,因为它将由用户输入)具有最高数字的女性名字以及具有最高数字的顶部男性名字。我不知道如何调用这些值,因为我不能(据我所知)使用索引来指示排名,如果两个性别在同一个列表中。对我来说,这种方法似乎比简单地创建两个列表要复杂得多,并且不太理想。
通过评论中的建议,部分@Charles_May:
简单循环:
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])