我开始将DataSet与OleDB一起使用。在读取CSV时,其中一列中的数据被格式化为字符串,而这些实际上是数字值(基本上是整数),我想与WHERE子句比较给定条件(提取一些> 0)。我不知道如何将这些字符串值转换为整数,因此我可以对它们进行一些数学计算而不会被InvalidCastException停止。
public static void Main(string[] args)
{
string csvFile = ConfigurationManager.AppSettings["csvFile"];
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ csvFile + ";Extended Properties=\"Text;HDR=true;FMT=Delimited\"";
DataSet ds = new DataSet();
using (OleDbConnection con = new OleDbConnection(connectionString))
{
string sql = string.Format("SELECT * FROM [DE.csv]", csvFile);
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, con);
adapter.Fill(ds);
ds.Tables[0].TableName = "Table1";
var lista = ds.Tables["Table1"]
.AsEnumerable()
.Where(r => r.Field<int>("#_Comp#") > 0) // // Invalid Cast Exception (!!)
.Select(i => new { Name = i.Field<int>("#_Comp#") });
Console.WriteLine(lista.Count());
}
}