我努力尋找正確的方式來查詢數據庫中的特定實體。我有一個表TeamMember看起來如下:帶參數(LINQ,SQL,C#)的表達式
public class TeamMember
{
public Guid TeamId { get; set; }
public Guid ManagerUserId { get; set; }
...
}
在幾個位置,我想查詢我的團隊是「TeamManager」。
public TeamMember GetTeamManager(Guid teamId, List<TeamMember> teamMembers)
{
return teamMembers.FirstOrDefault(member => member.TeamId == teamId && member.ManagerUserId == null);
}
如果我想在一個表達式,如(不是真正的代碼)的使用方法,
...
// IQueryable<TeamMember>
teamMembers.Where(member => member.team.GetTeamManager(teamId, teamMembers))
它工作正常,在內存中的對象,但這並不組合與實體框架工作,所以真正的數據庫對象。
所以我是用靜態的表情嘗試,但我沒有找到它採用了靜態的表達結合的變量如任何解決方案:
// this should be an ideal solution
Expression<Func<TeamMember, bool>> exp = teammember => teamMember.TeamId == **CUSTOM_VARIABLE** && teamMember.ManagerUserId == null;
teamMembers.Where(exp)
我想重用的表達,但我也想能夠修改變量。我的目標是避免之間。因爲下面將工作對象的創建,但效率較低(糾正我,如果我錯了)
teamMembers.ToList().Where(member => member.team.GetTeamManager(teamId, teamMembers))
所以,請幫助我與我的問題:)。 提前謝謝!
謝謝按預期工作,我嘗試了類似的東西,但在某處丟失。也許我應該指出,這隻適用於IQueryable元素。 – Muarl