我有linq查询,但很多时候我需要使用一些外部方法编辑属性,就像我上面所做的那样,它给出了预期的结果,但问题是它看起来很脏,尽管我需要编辑一列,我需要重建整个如下所示的物体,
如何让它看起来更好看?
什么是效率最高的 实现这个目标?
(我觉得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);
答案 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));
}
}
}