在DataTable对象上运行许多动态SQL查询是否可行?
本文关键字:是否 查询 SQL 动态 对象 DataTable 运行 许多 | 更新日期: 2023-09-27 17:50:24
一个数据表对象,例如Stocks(股票,板块,价格)我想支持动态查询(即在编译时不知道)就像这个"股票价格像'%A'和价格>7.50 "
我理解DataView。RowFilter支持一定程度的SQL表达式但问题是每次你设置。rowfilter, DataView重建内部索引,这是太多的开销
我尽量不查询SQL Server,因为1)它是一个小数据集,在运行时不会改变太多,因此可以在内存中2)我想评估成千上万的这些自由形式的SQL表达式
我有什么选择?谢谢!
更新:
Thx jp2code for DataTable。选择
我还没有验证,但是这个链接http://www.codeproject.com/Tips/807941/DataTable-Select-is-Slow
说,建立一个DataView将创建一个索引,这似乎对DataTable有利。选择,因此我将把所有数据存储在一个DataTable对象中,并为查询中涉及的每个列创建一个DataView。
调用GetData(table)一次,然后每隔一次调用重载GetData(table, sqlFilter):
private DataTable m_table;
public DataTable GetData(string sqlCmd)
{
DataTable table = new DataTable();
return table;
}
public DataTable GetData(DataTable table, string sqlFilter)
{
if (!String.IsNullOrEmpty(sqlFilter))
{
var copy = table.Clone();
foreach (DataRow row in table.Select(sqlFilter))
{
var newRow = copy.NewRow();
for (int i = 0; i < row.ItemArray.Length; i++)
{
newRow[i] = row.ItemArray[i];
}
copy.Rows.Add(newRow);
}
return copy;
}
return table;
}
也许还有其他的方法,但这应该是你的开始。