C# linq到对象的最佳对象结构?
我有一个程序,它将数据存储在内存中的对象中,你可以把这些对象想象成内存中的小db。我想使用LINQ to对象对内存中的对象运行一些简单的查询。内存中的对象是否应该使用首选结构。在我深入到这个项目之前,有没有什么好的资源我应该读一下 编辑: 这里有更多关于应用程序的信息C# linq到对象的最佳对象结构?,c#,winforms,linq,linq-to-objects,C#,Winforms,Linq,Linq To Objects,我有一个程序,它将数据存储在内存中的对象中,你可以把这些对象想象成内存中的小db。我想使用LINQ to对象对内存中的对象运行一些简单的查询。内存中的对象是否应该使用首选结构。在我深入到这个项目之前,有没有什么好的资源我应该读一下 编辑: 这里有更多关于应用程序的信息 它是一个winforms应用程序,也可以作为服务运行。它将跟踪最大约10k对象的状态。每个对象都是相当独立的,因此我认为我不需要做很多连接(如果有的话)。因为它可以作为服务运行,所以我添加了一个可以查询对象信息的接口。查询将询问问
它是一个winforms应用程序,也可以作为服务运行。它将跟踪最大约10k对象的状态。每个对象都是相当独立的,因此我认为我不需要做很多连接(如果有的话)。因为它可以作为服务运行,所以我添加了一个可以查询对象信息的接口。查询将询问问题并对对象进行分组,而不是修改它们。每个对象看起来更像一个客户对象,而不是一个产品对象。有很多资源介绍如何执行LINQ到POCO(普通的旧CLR对象)。这里只是一些让你开始
有很多资源介绍了如何执行LINQ到POCO(普通的旧CLR对象)。这里只是一些让你开始
雷克斯,首先问几个问题:
- 这是WinForms/WPF应用程序还是ASP.NET?可能与此相关,因为当为每个用户/sesion/etc复制时,内存中的“小”内存占用可能会变得“大”
- “小db”-你在这里说的有多小?10kb、100kb、1Mb?事实上,我不认为大小与您选择的结构(在限制范围内,如物理RAM!)一样重要,但它可能对其他回答者有所帮助
- “简单查询”-您能否提供有关对象和查询外观的更多信息?您是否有
姓名、地址、年龄
的
,或者您是否更关心客户
,该产品有多个产品
以不同的尺寸
付款方式下的多个
。。。或者更复杂的事情订单
- 保持对象图/树/层次结构平坦(尤其是要查询的属性)。Linqing on
与where Customer.Zipcode=90210
似乎没有太大区别,但在我看来,嵌套对象越复杂,框架就越难创建有效的查询where Customer.Address.Zipcode=90210
- 如果您已经预先知道查询是什么,并且它们对您的应用程序很重要,那么您可能应该“构建”数据结构来支持查询,而不是仅仅依赖Linq?举个例子,搜索引擎将其所有数据存储在内存中作为对象(可以很容易地存储为1-2Mb或更多),但查询机制是一对定制的
哈希表
(),它们非常快速
- 应该允许您在对象集合上指定索引,以加快某些查询。这是一项正在进行的工作,但可能对您的需要有用
- LiveLinq的网站上说“LiveLinq使用索引和其他优化来加速内存中的LINQ查询”。它听起来很像
,但将是一种商业产品索引Linq
HTH雷克斯,先问几个问题:
- 这是WinForms/WPF应用程序还是ASP.NET?可能与此相关,因为当为每个用户/sesion/etc复制时,内存中的“小”内存占用可能会变得“大”
- “小db”-你在这里说的有多小?10kb、100kb、1Mb?事实上,我不认为大小与您选择的结构(在限制范围内,如物理RAM!)一样重要,但它可能对其他回答者有所帮助
- “简单查询”-您能否提供有关对象和查询外观的更多信息?您是否有
姓名、地址、年龄
的
,或者您是否更关心客户
,该产品有多个产品
以不同的尺寸
付款方式下的多个
。。。或者更复杂的事情订单
- 保持对象图/树/层次结构平坦(尤其是要查询的属性)。Linqing on
与where Customer.Zipcode=90210
似乎没有太大区别,但在我看来,嵌套对象越复杂,框架就越难创建有效的查询where Customer.Address.Zipcode=90210
- 如果您已经预先知道查询是什么,并且它们对您的应用程序很重要,那么您可能应该“构建”数据结构来支持查询,而不是仅仅依赖Linq?举个例子,搜索引擎将其所有数据存储在内存中作为对象(可以很容易地存储为1-2Mb或更多),但查询机制是一对定制的
哈希表
(),它们非常快速
- 应该允许您在对象集合上指定索引,以加快某些查询。这是一项正在进行的工作,但可能对您的需要有用
- LiveLinq的网站上说“LiveLinq使用索引和其他优化来加速内存中的LINQ查询”。它听起来很像
,但将是一种商业产品索引Linq