Dav*_*vid 5 c# linq expression-trees specification-pattern
我正在使用这种形式的规格:
public static Expression<Func<User, bool>> IsSuperhero
{
get
{
return x => x.CanFly && x.CanShootLasersFromEyes;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我可以在表单中使用此规范:
var superHeroes = workspace.GetDataSource<User>().Where(UserSpecifications.IsSuperhero);
Run Code Online (Sandbox Code Playgroud)
但是我不确定如何对这样的关联对象使用规范:
var loginsBySuperheroes = workspace.GetDataSource<Login>().Where(x => x.User [ ??? ]);
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,还是我需要重新考虑我的规范实施?
明显地:
var loginsBySuperheroes = workspace.GetDataSource<User>()
.Where(UserSpecifications.IsSuperhero)
.SelectMany(x => x.Logins);
Run Code Online (Sandbox Code Playgroud)
这可能很有趣:
var secretBillionaires = workspace.GetDataSource<User>()
.Where(UserSpecifications.IsSuperhero)
.SelectMany(user => user.Logins)
.Where(LoginSpecifications.IsSecretIdentity)
.Select(login => login.DayJob)
.Where(DayJobSpecifications.IsBillionaire)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |