修改 Linq 投影

问题描述 投票:0回答:1

假设我有一个具有 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
以在两个投影(零、一、二……九)中添加我想要的十个新属性,如何避免将其添加到两个投影中?有没有办法合并公共部分,只在需要的时候修改元音以避免冗余?

c# .net entity-framework
1个回答
0
投票

MyModel
中的属性不会影响当前的预测。我会简单地创建一个新方法,例如
GetOnlyNumbers
。注意
GetOnlyConsonants
不会引入字母表的其余部分,因为它仅包含投影中的辅音。

public IQueryable<MyModel> GetOnlyConsonants()
{
    return Context.Entities.AlphabetSet.Select(set => new MyModel {
         Zero = set.Zero,
         One = set.One,
         // ...
    })
}
© www.soinside.com 2019 - 2024. All rights reserved.