2013-11-21 64 views
0

我正在使用Microsoft Visual Studio,并使用C#在ASP.net中进行编码。如何将csv文件绑定到下拉列表?

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

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

+0

你需要什么来绑定到什么? CSV的内容是什么? – Noctis

+0

首先,您需要将csv文件的内容读入列表或“DataTable”,然后将“ComboBox”绑定到该对象。 –

+0

您还可以使用CSV驱动程序的SQL驱动程序 – Jack

回答

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); 
+0

感谢您的回复,我会试着记住,我不知道Linq是什么。所以接下来我要做的就是熟悉linq。 – Timetraveller

+0

我真的很感谢你的帮忙。现在我有很多例子可以在周末练习和学习。非常感谢。在这篇文章中,我会回到你身边。 – Timetraveller

+0

Oy,盎司配偶以及... :)总是很乐意提供帮助。愿你的团队赢得灰烬...... – Noctis