自由链接

自由链接

  • 2020年10月29日
  • 2分钟阅读

使用XPO,您可以使用自由连接基于不直接相关(没有显式定义的关联)的持久对象建立条件。本质上,XPO允许您连接条件上的任何持久对象,使用它们的属性针对匹配对象计算聚合函数,并返回聚合值作为连接的结果。为此,在您的条件中使用JoinOperand

用于创建JoinOperand的选项包括:

  • CriteriaOperator.Parse方法。

    方法的条件字符串参数的一般格式为:[< JoinTypeName >] [ JoinCondition ]

    在这里,JoinTypeName表示JoinOperand.JoinTypeName属性值,而JoinCondition是与条件相等的CriteriaOperator的字符串表示形式。

    要在连接条件内指示父对象的属性,请在它们前面加上一个脱字符号和点(’ ^。 '),如下所示:

    [< JoinTypeName >] [[^。ParentObjectProperty ] = [ JoinedObjectProperty ]]

    以下代码段演示了如何检索关闭了50个以上订单的员工。

    CriteriaOperator criteria = 
        CriteriaOperator.Parse("[<Orders>][^.EmployeeID = EmployeeID].Count() > 50");
    XPCollection<Employee> employees = new XPCollection<Employee>(session, criteria);
    
  • JoinOperand构造。

    您可以使用特定的构造函数来创建JoinOperand,并通过相应的构造函数参数使用join和聚合设置对其进行初始化。

    CriteriaOperator joinCriteria = 
        new OperandProperty("^.EmployeeID") == new OperandProperty("EmployeeID");
    JoinOperand joinOperand = 
        new JoinOperand("Orders", joinCriteria, Aggregate.Count, new OperandProperty("EmployeeID"));
    BinaryOperator criteria = 
        new BinaryOperator(joinOperand, new OperandValue(50), BinaryOperatorType.Greater);
    XPCollection<Employee> employees = 
        new XPCollection<Employee>(session, criteria);
    
  • LINQ to XPO中的Join操作。

    语法与LINQ中的组联接(JoinGroup方法)的语法相同。

    XPQuery<Employee> employees = new XPQuery<Employee>(session);
    XPQuery<Orders> orders = new XPQuery<Orders>(session);
    var list = from e in employees
               join o in orders on e.EmployeeID equals o.EmployeeID.EmployeeID into query
               where query.Count() > 50
               select e
    ;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值