首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是更好的方法?

什么是更好的方法?
EN

Stack Overflow用户
提问于 2012-06-20 19:28:36
回答 2查看 141关注 0票数 0

假设我需要从数据库中获取一些记录,并根据枚举类型属性对它们进行筛选。

基于List<SomeType>

  • filter的
  • fetch

当显示记录时,大小筛选器(除介质)将有一个预定义的值。在大多数情况下,用户将根据预定义的值从筛选过的数据中选择一个值。有一种可能性,用户也可以过滤到大,然后过滤到中,然后过滤到大。

在相同的情况下,我有不同的情况:

properties

  • List列表包含不足100条记录,3-5 包含100-500条记录,3-5属性
  • 列表包含最大2 000条记录,3-5属性

我在这里最好的方法是什么?我应该有一个包含每个枚举的网格的选项卡,还是应该有一个公共枚举并始终进行筛选,或者?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-20 19:43:02

我会在数据库上进行过滤,如果这些字段被索引了,我会怀疑使用db过滤器会比事后使用c-sharp进行过滤要快得多。

当然,您可以始终缓存筛选的数据库结果,以防止多个未托管的数据库调用。

编辑:对于将信息存储在数据库中,假设您设置了以下字段:

代码语言:javascript
运行
复制
CREATE TABLE Tshirts
(
    id int not null identity(1,1),
    name nvarchar(255) not null,
    tshirtsizeid int not null,
    primary key(id)
)

CREATE TABLE TshirtSizes
(
    id int not null, -- not auto-increment
    name nvarchar(255)
)

INSERT INTO TshirtSizes(id, name) VALUES(1, 'Small')
INSERT INTO TshirtSizes(id, name) VALUES(2, 'Medium')
INSERT INTO TshirtSizes(id, name) VALUES(3, 'Large')

ALTER TABLE Tshirts ADD FOREIGN KEY(tshirtsizeid) REFERENCES tshirtsize(id)

然后在你的C#

代码语言:javascript
运行
复制
public enum TShirtSizes 
{
    Small = 1,
    Medium = 2,
    Large = 3
}

在本例中,表TshirtSizes仅用于读者了解神奇数字1、2和3意味着什么。如果您不关心数据库的可读性,您可以省略这些表,只需要一个索引列。

票数 1
EN

Stack Overflow用户

发布于 2012-06-20 19:34:05

记忆通常很便宜。否则,您可以对所有值进行一次排序,并根据比较检索,即O(n)。你可以跟踪事物的位置,以更快的方式检索。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11126780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档