假设我有一个具有 26 个属性(
MyModel
、A
、B
、...)的平面模型 (C
)。假设我可以在屏幕上显示这个模型,并且我的大多数客户只关心辅音,这很方便,因为从数据库中获取元音非常耗时。截至目前,我有两个遗留预测:
public IQueryable<MyModel> GetOnlyConsonants()
{
return Context.Entities.AlphabetSet.Select(set => new MyModel {
B = set.B,
C = set.C,
//And so forth, bringing back all the consonants
})
}
public IQueryable<MyModel> GetAllAlphabet()
{
return Context.Entities.AlphabetSet.Select(set => new MyModel {
B = set.B,
C = set.C,
//And so forth, bringing back all the consonants
// This part is time consuming
A = set.A,
E = set.E,
I = set.I,
O = set.O,
U = set.U
})
}
现在,如果我扩展
MyModel
以在两个投影(零、一、二……九)中添加我想要的十个新属性,如何避免将其添加到两个投影中?有没有办法合并公共部分,只在需要的时候修改元音以避免冗余?
MyModel
中的属性不会影响当前的预测。我会简单地创建一个新方法,例如 GetOnlyNumbers
。注意 GetOnlyConsonants
不会引入字母表的其余部分,因为它仅包含投影中的辅音。
public IQueryable<MyModel> GetOnlyConsonants()
{
return Context.Entities.AlphabetSet.Select(set => new MyModel {
Zero = set.Zero,
One = set.One,
// ...
})
}