当前位置:  开发笔记 > 编程语言 > 正文

DataTables和LINQ中的装箱/拆箱

如何解决《DataTables和LINQ中的装箱/拆箱》经验,为你挑选了1个好方法。

假设我有基于内存的数据表,如下所示:

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;
...

然后我查询这个表:

List rows = (from r in table where (double)r["c1"] < 2.0 select r).ToList();

在剖析器中,我看到它创造了很多双打.我认为它与比较有某种关系.

任何想法如何摆脱这种不必要的内存分配?

我使用.NET 4,VS 2010,C#.



1> Marc Gravell..:

这里的底层存储是一个类型化的数组(在本例中是在DoubleStorage类中),但所有访问都是通过的object,因为没有通用的API.除非你没有切换到基于类的模型,否则你无法避免拳击DataTable.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有