如何将csv文件绑定到下拉列表?

时间:2013-11-21 05:47:56

标签: c# visual-studio-2010 csv drop-down-menu binding

我正在使用Microsoft Visual Studio,并使用C#在ASP.net中编码。

我有一个下拉列表,我希望以编程方式绑定到csv文件。我不知道如何或从哪里开始。

之前已绑定到ACCESS数据库(.mdb)但不知道csv如何工作。 有人可以指导我。

1 个答案:

答案 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.Gendersome_obj.Race之类的事情:)

如果你想要全部打印出来:

foreach (var obj in collection_of_objects)
    Console.Out.WriteLine("Some obj fields: {0}, {1}, {2}" , obj.ID, obj.First, obj.Race);