使用数组循环
本文关键字:循环 数组 | 更新日期: 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
在完成后关闭。