我最近有看到兩段LINQ程式碼
大概如下
Expression<Func<Base_User, Base_Department, Base_UserDTO>> select = (a, b) => new Base_UserDTO
{
DepartmentName = b.Name
};
這段是Expression嗎?我能請問他是在什麼狀況下這樣使用呢?
能不用這樣寫嗎?雖然有看過介紹但還不是很了解
還有這段
var search = input.Search;
select = select.BuildExtendSelectExpre();
var q_User = search.all ? Db.GetIQueryable<Base_User>() : GetIQueryable();
var q = from a in q_User.AsExpandable()
join b in Db.GetIQueryable<Base_Department>() on a.DepartmentId equals b.Id into ab
from b in ab.DefaultIfEmpty()
select @select.Invoke(a, b);
這種寫法也是我第一次看見
我知道他是left join
但我不太清楚BuildExtendSelectExpre、GetIQueryable、AsExpandable
以及 select @select.Invoke(a, b)
不知道能不能解說一下為什麼要這樣寫呢?