我正在使用Microsoft Visual Studio,并使用C#在ASP.net中编码。
我有一个下拉列表,我希望以编程方式绑定到csv文件。我不知道如何或从哪里开始。
之前已绑定到ACCESS数据库(.mdb)但不知道csv如何工作。 有人可以指导我。
答案 0 :(得分:2)
好吧,看来你必须阅读它,解析它并绑定它。
现在,我认为最简单的方法是使用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);