如何使用基于属性的一个文本文件填充两个列表? [关闭]

问题描述 投票:-5回答:1

我有一个包含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在这里工作,因为它将由用户输入)具有最高数字的女性名字以及具有最高数字的顶部男性名字。我不知道如何调用这些值,因为我不能(据我所知)使用索引来指示排名,如果两个性别在同一个列表中。对我来说,这种方法似乎比简单地创建两个列表要复杂得多,并且不太理想。

c# arrays list populate jagged-arrays
1个回答
0
投票

通过评论中的建议,部分@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])

© www.soinside.com 2019 - 2024. All rights reserved.