如何根据一个属性用一个文本文件填充两个列表?

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])