输入信息时自动创建字符串

时间:2015-05-04 00:11:34

标签: c# regex database string string-split

我目前正在尝试使用OleDb从Access数据库获取信息。 我有一行包含用户的日期,时间等(日志),我正在使用以下方法检索它们:

connection.Open();
oledbAdapter = new OleDbDataAdapter(Sql, connection);

DataSet dsSet = new DataSet();
oledbAdapter.Fill(dsSet);
foreach (DataRow row in dsSet.Tables[0].Rows)
{
    rawList.Add(row["Running"].ToString());
}

var show = String.Join(null, rawList.ToArray());

我的数据库中有以下文字:

|| 04-05-2015 | 7:10 | 2 | 5 mph
|| 04-05-2015 | 12:10 | 1 | 8 mph

我使用Regex分隔了2个会话:

var doubleVBarSplit = Regex.Split(show, " \\|\\| ");

并使用相同的方式在一个会话中分隔数据。但我无法弄清楚的是如何将更多的会话彼此分开,并将日期,时间,持续时间,速度放在单独的字符串中,以便我可以显示它们。

有人可以指导我如何做到这一点吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我会创建一个新类,然后将数据库每一行的值分配给新类。然后我会将每一行添加到该类的List中。然后,您可以根据需要显示此课程。另外,你说"会话"但我相信你的意思是"记录"。代码

public class Result
    {
        public Result()
        { }

        public string aDate { get; set; }
        public string Time { get; set; }
        public string Marker { get; set; }
        public string speed { get; set; }
    }

...

char pipe = Convert.ToChar("|");
        string[] splits = null;
        List<Result> ResultList = new List<Result>();

        foreach (DataRow row in dsSet.Tables[0].Rows)
        {
            result = new Result();

            splits = String.Format("{0}",row["Running"]).Split(pipe);

            result.aDate = String.Format("{0}", splits[2]);
            result.Time = String.Format("{0}", splits[3]);
            result.Marker = String.Format("{0}", splits[4]);
            result.speed = String.Format("{0}", splits[5]);
            ResultList.Add(result);

        }

然后您可以按如下方式轻松显示它们:

foreach(Result aresult in ResultList) {
String.Format("{0}", aresult.aDate);
aresult.Time;
String.Format("{0}", aresult.Marker);
aresult.Speed;
}