我努力寻找正确的方式来查询数据库中的特定实体。我有一个表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