gpt4 book ai didi

c# - 在 C# 中创建 DataTable 是否有更有效的方法?

转载 作者:行者123 更新时间:2023-11-30 22:53:38 24 4
gpt4 key购买 nike

我的项目中有一个简单的 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
};

//several more column inserts...

var primaryKeyColumns = new DataColumn[1];
primaryKeyColumns[0] = table.Columns["Id"];
table.PrimaryKey = primaryKeyColumns;

return table;

}

最佳答案

您可以做几件事...

您可以忽略设置为默认值的值,并使用列名和类型的构造函数参数来减少代码使用。我还会使用 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,因为如果没有设置它默认为列名 ;)

这不那么冗长,也应该更容易阅读。

关于c# - 在 C# 中创建 DataTable 是否有更有效的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56984981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com