Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Dataset.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Dataset.cs	(revision 7336)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Dataset.cs	(revision 7337)
@@ -155,4 +155,5 @@
     }
 
+    #region Double
     public IEnumerable<string> DoubleVariables {
       get { return variableValues.Where(p => p.Value is List<double>).Select(p => p.Key); }
@@ -196,4 +197,93 @@
         yield return values[index];
     }
+    #endregion
+
+    #region String
+    public IEnumerable<string> StringVariables {
+      get { return variableValues.Where(p => p.Value is List<string>).Select(p => p.Key); }
+    }
+
+    public IEnumerable<string> GetStringValues(string variableName) {
+      IList list;
+      if (!variableValues.TryGetValue(variableName, out list))
+        throw new ArgumentException("The variable " + variableName + " does not exist in the dataset.");
+      List<string> values = list as List<string>;
+      if (values == null) throw new ArgumentException("The variable " + variableName + " is not a string variable.");
+
+      //mkommend yield return used to enable lazy evaluation
+      foreach (string value in values)
+        yield return value;
+    }
+    public ReadOnlyCollection<string> GetReadOnlyStringValues(string variableName) {
+      IList list;
+      if (!variableValues.TryGetValue(variableName, out list))
+        throw new ArgumentException("The variable " + variableName + " does not exist in the dataset.");
+      List<string> values = list as List<string>;
+      if (values == null) throw new ArgumentException("The variable " + variableName + " is not a string variable.");
+      return values.AsReadOnly();
+    }
+    public string GetStringValue(string variableName, int row) {
+      IList list;
+      if (!variableValues.TryGetValue(variableName, out list))
+        throw new ArgumentException("The variable " + variableName + " does not exist in the dataset.");
+      List<string> values = list as List<string>;
+      if (values == null) throw new ArgumentException("The variable " + variableName + " is not a string variable.");
+      return values[row];
+    }
+    public IEnumerable<string> GetStringValues(string variableName, IEnumerable<int> rows) {
+      IList list;
+      if (!variableValues.TryGetValue(variableName, out list))
+        throw new ArgumentException("The variable " + variableName + " does not exist in the dataset.");
+      List<string> values = list as List<string>;
+      if (values == null) throw new ArgumentException("The varialbe " + variableName + " is not a string variable.");
+
+      foreach (int index in rows)
+        yield return values[index];
+    }
+    #endregion
+
+    #region DateTime
+    public IEnumerable<string> DateTimeVariables {
+      get { return variableValues.Where(p => p.Value is List<DateTime>).Select(p => p.Key); }
+    }
+
+    public IEnumerable<DateTime> GetDateTimeValues(string variableName) {
+      IList list;
+      if (!variableValues.TryGetValue(variableName, out list))
+        throw new ArgumentException("The variable " + variableName + " does not exist in the dataset.");
+      List<DateTime> values = list as List<DateTime>;
+      if (values == null) throw new ArgumentException("The variable " + variableName + " is not a DateTime variable.");
+
+      //mkommend yield return used to enable lazy evaluation
+      foreach (DateTime value in values)
+        yield return value;
+    }
+    public ReadOnlyCollection<DateTime> GetReadOnlyDateTimeValues(string variableName) {
+      IList list;
+      if (!variableValues.TryGetValue(variableName, out list))
+        throw new ArgumentException("The variable " + variableName + " does not exist in the dataset.");
+      List<DateTime> values = list as List<DateTime>;
+      if (values == null) throw new ArgumentException("The variable " + variableName + " is not a DateTime variable.");
+      return values.AsReadOnly();
+    }
+    public DateTime GetDateTimeValue(string variableName, int row) {
+      IList list;
+      if (!variableValues.TryGetValue(variableName, out list))
+        throw new ArgumentException("The variable " + variableName + " does not exist in the dataset.");
+      List<DateTime> values = list as List<DateTime>;
+      if (values == null) throw new ArgumentException("The variable " + variableName + " is not a DateTime variable.");
+      return values[row];
+    }
+    public IEnumerable<DateTime> GetDateTimeValues(string variableName, IEnumerable<int> rows) {
+      IList list;
+      if (!variableValues.TryGetValue(variableName, out list))
+        throw new ArgumentException("The variable " + variableName + " does not exist in the dataset.");
+      List<DateTime> values = list as List<DateTime>;
+      if (values == null) throw new ArgumentException("The varialbe " + variableName + " is not a DateTime variable.");
+
+      foreach (int index in rows)
+        yield return values[index];
+    }
+    #endregion
 
     #region IStringConvertibleMatrix Members
