使用数组循环

本文关键字:循环 数组 | 更新日期: 2023-09-27 17:57:06

我在foreach循环中有这个数组:

StreamReader reader = new StreamReader(Txt_OrigemPath.Text);
reader.ReadLine().Skip(1);
string conteudo = reader.ReadLine();            
string[] teste = conteudo.Split(new[] { '*' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in teste)
{
    string oi = s;
}

我正在阅读的行包含一些字段,例如matriculation, id, id_dependent, birthday ...我有一个CheckedListBox,用户可以根据此选择并选择他想要的字段以及他想要的顺序,例如(我知道第一个是matriculation第二个是id,第三个是name),我怎么能选择一些字段, 将其值传递给某个变量并根据选中列表框的顺序对它们进行排序?希望我能说清楚。

我试过这个:

using (var reader = new StreamReader(Txt_OrigemPath.Text))
            {
                var campos = new List<Campos>();
                reader.ReadLine();
                while (!reader.EndOfStream)
                {
                    string conteudo = reader.ReadLine();
                    string[] array = conteudo.Split(new[] { '*' }, StringSplitOptions.RemoveEmptyEntries);
                    var campo = new Campos
                    {
                        numero_carteira = array[0]
                    };
                    campos.Add(campo);
                }
            }

现在,我如何运行列表并将其值与用户从checkedlistbox中选择的字段进行比较?因为如果我在{}再次实例化该类,它的值将为空......

Person p = new Person();
string hi = p.numero_carteira;  // null.....

使用数组循环

Skip(1)将跳过reader.ReadLine()返回的第一行字符串的第一个字符。由于reader.ReadLine()本身跳过了第一行,因此Skip(1)完全是多余的。

首先创建一个可以存储字段的类

public class Person
{
    public string Matriculation { get; set; }
    public string ID { get; set; }
    public string IDDependent { get; set; }
    public string Birthday { get; set; }
    public override string ToString()
    {
        return String.Format("{0} {1} ({2})", ID, Matriculation, Birthday);
    }
}

(为了简单起见,我在这里使用了字符串,但您也可以使用 ints 和 DateTime,这需要一些转换。

现在,创建一个将存储人员的列表

var persons = new List<Person>();

将条目添加到此列表。拆分字符串时不要删除空条目,否则您将失去字段的位置!

using (var reader = new StreamReader(Txt_OrigemPath.Text)) {
    reader.ReadLine();  // Skip first line (if this is what you want to do).
    while (!reader.EndOfStream) {
        string conteudo = reader.ReadLine();
        string[] teste = conteudo.Split('*');
        var person = new Person {
            Matriculation = teste[0],
            ID = teste[1],
            IDDependent = teste[2],
            Birthday = teste[3]
        };
        persons.Add(person);
    }
}

using语句可确保StreamReader在完成后关闭。