我的项目中有一个简单的CreateDataTable方法,对我来说似乎有点笨拙且效率低下。它可以工作,但是有没有更简洁的方式编写此代码?
任何提示都非常感谢。谢谢。
private static DataTable CreateDataTable()
{
var table = new DataTable("FileUploads");
var id = new DataColumn
{
DataType = Type.GetType("System.Int32"),
ColumnName = "Id",
AutoIncrement = true,
Unique = true
};
table.Columns.Add(id);
var name = new DataColumn
{
DataType = Type.GetType("System.String"),
ColumnName = "FileName",
AutoIncrement = false,
Caption = "FileName",
ReadOnly = false,
Unique = false
};
table.Columns.Add(name);
var path = new DataColumn
{
DataType = Type.GetType("System.String"),
ColumnName = "FilePath",
AutoIncrement = false,
Caption = "FilePath",
ReadOnly = false,
Unique = false
};
//再插入几列...
var primaryKeyColumns = new DataColumn[1];
primaryKeyColumns[0] = table.Columns["Id"];
table.PrimaryKey = primaryKeyColumns;
return table;
}
答案 0 :(得分:2)
您可以做几件事...
您可以忽略您设置为默认值的值,并为列名和类型使用构造函数参数以减少代码使用。我还将使用typeof(string)
而不是Type.GetType("System.String")
来提供编译时错误而不是运行时错误。
添加列并内联创建时使用AddRange
。
摆脱冗长的主键内容,并使用简单的数组分配
这将使您的代码更少,因此出错的可能性也更少。
private static DataTable CreateDataTable()
{
var table = new DataTable("FileUploads");
table.Columns.AddRange(new[]{
new DataColumn("Id", typeof(int))
{
AutoIncrement = true,
Unique = true
},
new DataColumn("FileName", typeof(string)),
new DataColumn("FilePath", typeof(string)),
// more columns here
});
table.PrimaryKey = new []{ table.Columns["id"] };
return table;
}
我也摆脱了Caption
,因为如果没有设置,它默认为列名;)
这不那么冗长,也应该更容易阅读。