嗨我有这个txt文件的结构:
Lukas 1
Zdenek 3
Martin 2
Kate 1
我需要加载这些数据...我需要加载到comboBox的名称......当我从ComboBox
中选择例如Lukas时,我需要将Name Lukas保存到变量Name,将数字1保存到变量数...
有可能吗?
我现在有了这个代码......
using (StreamReader reader = new StreamReader(@"C:\Us...nka\example.txt"))
{
string data = "";
data = reader.ReadToEnd().Trim();
}
但是我需要单独阅读姓名和单独的号码......你有什么想法吗?感谢..
答案 0 :(得分:1)
首先创建一个这样的类:
public class Person {
public string Name {get;set;}
public int Number {get;set;}
}
然后您可以使用Linq转换您读取的字符串,如下所示:
var people = data
.Split(new {'\r','\n'}, StringSplitOptions.RemoveEmptyEntries)
.Select(d => new Person { Name = d.Split(' ')[0], Value = int.Parse(d.Split(' ')[1])})
.ToList();
或者你可以更好地逐行阅读你的数据,如下所示:
var people = from l in File.ReadLines(@"C:\Us...nka\example.txt")
let parts = l.Split(' ')
select new Person {
Name = parts[0].Trim(),
Value = int.Parse(parts[1].Trim())
};
答案 1 :(得分:1)
您可以使用File.ReadLines
和String.Split
:
var lines = File.ReadLines(@"C:\Us...nka\example.txt");
var data = lines.Select(l => l.Split());
我会使用一个类来存储这两个属性:
public class Person
{
public int PersonID { get; set; }
public string PersonName { get; set; }
}
现在您可以在循环中或使用LINQ:
加载人员List<Person> allPersons = data
.Where(arr => arr.Length >= 2 && arr[1].Trim().All(Char.IsDigit))
.Select(arr => new Person
{
PersonName = arr[0].Trim(),
PersonID = int.Parse(arr[1].Trim())
})
.ToList();
修改:
非常感谢...但我无法将PersonsName加载到组合框
您可以BindingSource
使用ComboBox
。然后相应地设置DisplayMember
和ValueMember
属性:
var bindingSourcePersons = new BindingSource();
bindingSourcePersons.DataSource = allPersons;
personComboBox.DataSource = bindingSourcePersons.DataSource;
personComboBox.ValueMember = "PersonID";
personComboBox.DisplayMember = "PersonName";
答案 2 :(得分:0)
这是一个伪:
虽然读者不是EndOfStream 读当前行 将刚刚读取的行拆分为string []数组,分隔符为空格 数组中的第一项将是名称,数组中的第二项将是数字。 然后在组合框中添加项目。组合框有一个Items集合和一个add方法,它只需要一个System.Object。
http://msdn.microsoft.com/en-us/library/aa983551(v=vs.71).aspx