定义要在List <string>中显示的字符

时间:2018-01-31 13:05:55

标签: c# asp.net string list

enter image description here

我试图在文本文件中组织信息,我认为一个好方法是将文件的每一行定义为自己的List Item,然后用逗号分隔每个List条目但是我无法弄清楚如何解析或拆分列表项以便以后使用它们。

这将读取文件并返回包含五个条目的列表:

    public static List<String> ImportVehicalList() {

        List<String> vehiclesAndOptions = new List<string>();
        StreamReader sr = null;

        try { // Attempt to open text file

            String filePath = HttpContext.Current.Server.MapPath("~/srcDocuments/modelsAndOptions.txt");
            String modelOptions; // Line to be added to List

            using (sr = new StreamReader(filePath)) {

                while ((modelOptions = sr.ReadLine()) != null) {

                    // Tried to split it before creating the list but
                    // this did not work.
                    //modelOptions.Split(',').ToList<String>();
                    vehiclesAndOptions.Add(modelOptions);

                }

            }
        }
        catch (Exception e) { } // File Not Found Catch
        finally { try { sr.Close(); } catch (Exception ex) { } } // Cannot close the reader

        return vehiclesAndOptions;
    }

这就是我将列表加载到asp.net下拉列表中的方法。我希望在这里拆分列表,以便只有模型显示在下拉列表中。

protected void Page_Load(object sender, EventArgs e) {

    List<String> vehicalList = new List<string>();
    vehicalList = Utils.ImportVehicalList();

    foreach (String i in vehicalList) {

        ddlModels.Items.Add(i);
        //Response.Write(i);

    }

    // Binds the list to drop down menu ddlModels
    //ddlModels.DataSource = vehicalList;
    //ddlModels.DataBind();


}

这里有很多关于解析信息和真实的帖子,我不太熟悉它,我还没有找到一个我能用我的代码实现的解决方案。以下是我要研究的一些资料来源:

How to split() a delimited string to a List<String>

https://www.dotnetperls.com/convert-list-string

是否可以在逗号上解析列表项,或者只能先通过拆分字符串然后将每个项添加到列表来完成?

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找的是string.split,当你循环时。所以根据我的理解,每一行都包含一个具有如下属性的模型: Model, attribute, attribute, attribute

并且您希望每个模型都有一个属性列表。在你的情况下,这变为:

string[] arr = vehicleAndoptions.Split(',');
string model = arr[0];// or arr.First(); if you prefer linq
List<string> attributes = arr.Skip(1).AsList<string>();