Linq编辑结果,无需重构(.AsEnumerable())body

时间:2017-10-18 18:43:24

标签: c# linq

我有linq查询,但很多时候我需要使用一些外部方法编辑属性,就像我上面所做的那样,它给出了预期的结果,但问题是它看起来很脏,尽管我需要编辑一列,我需要重建整个如下所示的物体,

  1. 如何让它看起来更好看?

  2. 什么是效率最高的     实现这个目标?

  3. 有没有办法不复制上下文     编辑上下文?
  4. (我觉得1个答案涵盖了所有这些问题)

    var query = (from islem in dbContext
                join hasta in someEntity on islem.ID equals hasta.ID
                select new 
                {
                    ID = islem.ID,
                    Phone=hasta.Phone,
                    BirthDate=islem.BirthDate,
                    MuayeneSonucu= islem.TBMuayeneSonucuId,
                    KurumKodu=islem.CreatedKurumKodu
    
                }).AsEnumerable().Select(s => new myCustomModel()
                {
                    ID = s.ID,
                    Birthdate=s.BirthDate.Date,
                    Phone=FormatPhone(s.Phone),
                    MuayeneSonucu = s.MuayeneSonucu,
                    KurumAdi = getKurumAdiByKod(Convert.ToInt32(s.KurumKodu)) 
                    // I need to recreate entire model because of this.. 
                    // and s.KayitTarihi.Date property ofc
                }).AsQueryable().OrderByDescending(o => o.KayitTarihi);
    

1 个答案:

答案 0 :(得分:1)

选项1:

只需选择表格

即可让代码看起来更好
select new 
{
    islem = islem,
    hasta = hasta,
}

选项2:

根据您的架构,可以通过使用navigation properties完全避免显式连接(因此也就是中间模型)(EF仍会在幕后进行数据库连接)

选项3:

您也可以在模型上拍一个辅助属性

class MyModel
{
    public int KurumAdi
    {
        ...
        get
        {
            return getKurumAdiByKod(Convert.ToInt32(this.KurumKodu));
        }   
    }
}