我想创建一个类似于SQL Management Studio的导入/导出向导中的数据映射部分中的SQL数据类型的下拉列表。
有人知道如何在不编写自定义代码的情况下执行此操作吗?system.data.sql中会有一个方法调用吗?
仅出于后代,这并不难 - 在linqpad中运行它,引用System.Data
:
void Main()
{
Console.WriteLine(GetSqlTypes());
}
Dictionary<string,Type> GetSqlTypes()
{
var types=new Dictionary<string,Type>();
var a = Assembly.Load("System.Data");
foreach (var sqlType in a.GetTypes().Where(t=>t.Namespace=="System.Data.SqlTypes"
&& t.Name.StartsWith("Sql")
&& !t.Name.Contains("Exception")
&& !t.Name.Contains("Schema")
&& !t.Name.Contains("Stream")))
{
types.Add(sqlType.Name,sqlType);
}
return types;
}
因此,您只需将下拉列表绑定到getsqltypes:
ddlTypes.DataSource = GetSqlTypes();
ddlTypes.DataTextField = "Value";
ddlTypes.DataValueField = "Key";
ddlTypes.DataBind();
当然,这是一个纯粹的蛮力骇客,毫无疑问,别人有一种更优雅的方法,但这至少会让您启动并运行。
system.enum.getValues(typeof(system.data.sqldbtype));
没有内置的方法可以做到这一点。