假设我有基于内存的数据表,如下所示:
DataTable dt = new DataTable(); dt.Columns.Add("c1", System.Type.GetType("System.Double")); dt.Columns.Add("c2", System.Type.GetType("System.Double")); ... DataRow row = dt.AddRow(); row["c1"] = 1; row["c2"] = 2; ...
然后我查询这个表:
Listrows = (from r in table where (double)r["c1"] < 2.0 select r).ToList();
在剖析器中,我看到它创造了很多双打.我认为它与比较有某种关系.
任何想法如何摆脱这种不必要的内存分配?
我使用.NET 4,VS 2010,C#.
这里的底层存储是一个类型化的数组(在本例中是在DoubleStorage
类中),但所有访问都是通过的object
,因为没有通用的API.除非你没有切换到基于类的模型,否则你无法避免拳击DataTable
.