好吧,看来您必须阅读它、解析它并绑定它。
现在,我认为最简单的方法是使用 linq 构建自定义对象集合,然后您可以根据需要绑定到该集合。
让我们假设您的 CSV 包含 name,age 以简化操作。首先,将所有行读入一个集合(使用您喜欢的方法),假设它是InputLines。
使用 linq 获得一个不错的对象集合:
var my_objects_collection =
from line in InputLines
let parts = line.Split(',')
select new { name = parts [0], age = parts [1] };
然后,阅读this article(如果有帮助,请随意评价)以了解如何使用DisplayMemberPath 绑定到该集合的特定值,以及如何使用SelectedValuePath 从那里定位特定位。
这应该会让你走向光明的未来:)
编辑:
Linq 是您的朋友……它让您可以将对象集合视为 SQL 查询。一旦你了解它,你能取得的成就是惊人的。这是开始101 linq examples的一个很好的链接。
您甚至可以执行以下操作以将文件读取到 linq 表达式中:
var collection_of_objects =
(from line in File.ReadAllLines("your_csv_name.csv").Skip(1)
let parts = line.Split(',')
select new
{
ID = parts[0],
First = parts[1],
Last = parts[2],
Email = parts[3],
Gender = parts[4],
Race = parts[5]
}
).ToList();
电话:
File.ReadAllLines("your_csv_name.csv").Skip(1)
转换为:在跳过第一行后读取所有行,在我的例子中包含标题:id,first_name,last_name,email,gender,race,然后对于每一行,它将创建一个具有在new 之后定义的属性的对象(请注意,我是使用let 定义一个临时变量来保存Split 的结果。
最后,ToList() 用于获取具有属性的“真实”对象列表(没有它,您将获得一个可枚举的对象,但您将无法像使用“真正的”类对象)。
这允许您执行以下操作:
var some_obj = collection_of_objects.Skip(10).Take(1);
为了获取第 11 个对象,然后您可以执行 some_obj.Gender 或 some_obj.Race 之类的操作 :)
如果您想全部打印:
foreach (var obj in collection_of_objects)
Console.Out.WriteLine("Some obj fields: {0}, {1}, {2}" , obj.ID, obj.First, obj.Race);