使用数组循环

时间:2013-01-31 19:56:34

标签: c# arrays winforms visual-studio-2010

我在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,第二个是{ {1}},第三个是id),我如何选择一些字段,将其值传递给某个变量并根据checkedlistbox的顺序对它们进行排序?希望我能说清楚。

我试过了:

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它的值将为空......

{}

1 个答案:

答案 0 :(得分:1)

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和DateTimes,这需要一些转换。)

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

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在完成后关闭。