我有一個實體框架3.5項目,我正在使用TPH繼承。我的兩個具體類型在它們自己的DAO類中,幷包含一個將實體類投影到DTO中的選擇器。但是,這兩個具體類與另一個表都有類似的關係,我使用let語句來清晰地標識。我的問題是,我能否以某種方式重構這個let語句,因爲當我創建更多繼承的具體類時,我覺得我違反了DRY。我可以在linq語句中重構範圍變量嗎?
StudentDAO.cs:
var myDTO = from x in context.Students
let address = (from a in x.addresses where a.active == true select a).FirstOrDefault()
select new StudentDTO { id = x.id, studentname = x.studentname, address = a.address};
ProfessorDAO.cs:
var myDTO = from x in context.Professors
let address = (from a in x.addresses where a.active == true select a).FirstOrDefault()
select new ProfessorDTO { id = x.id, professorname = x.studentname, address = a.address};
那麼有沒有一種方法,我可以重構地址了這兩個查詢的?
鏈接的文章已經死了 – Fredou 2017-10-12 19:18:22
@Fredou我會更新鏈接 - 它應該是http: //tomasp.net/blog/dynamic-linq-queries.aspx – 2017-10-13 00:25:11