在我工作的地方,我们终于开始考虑使用强类型数据集来封装我们对 sqlserver 的一些查询。我一直在吹捧的想法之一是强类型列的优势,主要是因为不需要转换任何数据。我是否认为强类型数据集会在以下可能有数千行的情况下提高性能?
老方法:
using(DataTable dt = sql.ExecuteSomeQuery())
{
foreach (DataRow dr in dt.Rows)
{
var something = (string)dr["something"];
var somethingelse = (int)dr["somethingelse"];
}
}
新方法:
MyDataAdapter.Fill(MyDataset);
foreach (DataRow dr in MyDataset.MyDT.Rows)
{
var something = dr.Something;
var somethingelse = dr.SomethingElse;
}
如果属性真的只是在幕后进行转换,我可以看出根本不会有任何加速;首先,函数调用的开销可能会比以前花费更长的时间。
我们应该了解使用数据集的其他性能优势/劣势吗?
谢谢!
最佳答案
我不确定使用强类型数据集是否会有任何性能改进,但是您可以获得额外的类型安全性,例如,当您输入错误的字段名称时会出现编译器错误。
MSDN magazine中有一篇文章关于他们,引用其中的一行:
The speed in accessing a typed DataSet is comparable to the faster techniques in accessing an untyped DataSet (since a typed DataSet is just a layer over an untyped DataSet) and the readability of the typed DataSet is the best
此外,正如 Stuart B 指出的那样,Intellisense 本身就是值得的。
关于c# - 强类型数据集会提高性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/528680/