在返回字符串的字段上使用以下代码时,它工作正常,但当字段为long或Double类型时,我会收到错误:
分别
string f = cb.Name.Substring(2, cb.Name.Length - 2);
cb.DataSource = SQLite.GetValues(f).AsEnumerable()
.Select<System.Data.DataRow, String>(x => x.Field<string>(f))
.ToArray();
在上面的SQLite.GetValues中返回一个数据表。我试图用作组合框的数据源。
我可以对这一个Linq声明进行任何小改动以使其有效吗?
当我将代码行.Select<System.Data.DataRow, String>(x => x.Field<string>(f))
更改为.Select<System.Data.DataRow, Int64>(x => x.Field<Int64>(f))
或.Select<System.Data.DataRow, Double>(x => x.Field<Double>(f))
时,它适用于这些字段,但不适用于其他字段。
如果没有使用if语句首先检查字段,那么运行相应的代码行是否有其他方法?
方法GetValues
也用于填充DataGridView的DataSource,它将包含所有列,这就是我不仅仅从GetValues
返回List或数组的原因
另外考虑的是简单地在DataTable的DataRows上做一个循环返回来填充ComboBox也许这是最好的?
例如:
string f = cb.Name.Substring(2, cb.Name.Length - 2);
DataTable dt = new DataTable();
dt = SQLite.GetValues(f,false);
foreach (DataRow dr in dt.Rows)
{
cb.Items.Add(dr[f]);
}
答案 0 :(得分:1)
要在字符串中强制转换字段,请使用方法.ToString()。