我在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
它的值将为空......
{}
答案 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
在完成后关闭。