有关条件投影查询的帮助
本文关键字:帮助 查询 投影 条件 | 更新日期: 2023-09-27 17:59:13
我有一个要求,需要显示员工及其角色的列表。因此,如果员工的角色是Accounting,我想显示该员工的FirstName和LastName。下面是我的代码
SearchTemplate RoleTemplate = new SearchTemplate();
RoleTemplate.Criteria = DetachedCriteria.For(typeof(CompanyRole), "CR");
RoleTemplate.Criteria.CreateCriteria("User", "User")
.SetProjection(Projections.ProjectionList()
.Add((Projections.Conditional
(Restrictions.Eq("CR.Role", Role.Accounting),
Projections.Property("User.FirstName"), Projections.Property("User.FirstName"))), "Account")
.Add((Projections.Conditional
(Restrictions.Eq("CR.Role", Role.Manager),
Projections.Property("User.FirstName"), Projections.Property("User.FirstName"))), "Manager"));
公司角色表将userid作为User表主键id的外键。如何在上面的"Account"answers"Manager"字符串中获得Firstname Lastname字段。上面的代码不起作用,它在两个字符串中都放置了冗余的名称值。此外,我有一个LastName字段,我想将其附加到两个字符串中的FirstName。有人能解释一下我将如何做到这一点吗?此外,在上面的查询中,我已经使用了projections.properties两次,我知道这是错误的,但我只是想知道我在寻找什么。
它必须在sql语句中吗?难道不足以:
var result = CreateCriteria<User>()
.CreateAlias("CompanyRole", "cr")
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("FirstName"))
.Add(Projections.Property("LastName"))
.Add(Projections.Property("cr.Role"))
)
.List<object[]>();
foreach (var item in result)
{
string name = string.Concat(item[0], item[1]);
Role role = (Role)item[2];
// do something with name and role
}