我会在数据库上进行过滤,如果这些字段被索引,我会怀疑使用 db 过滤器会比事后使用 c-sharp 过滤快得多。
当然,您始终可以缓存过滤后的数据库结果,以防止多次不必要的数据库调用。
编辑:至于在数据库中存储信息,假设你有这个字段设置:
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#
public enum TShirtSizes
{
Small = 1,
Medium = 2,
Large = 3
}
在此示例中,该表TshirtSizes
仅用于让读者了解幻数 1、2 和 3 的含义。如果您不关心数据库的可读性,您可以省略这些表而只使用索引列。