两表连接

        #region 两表连接
        /// <summary>
        /// 查询两表的集合 
        /// 使用例子:(可以参考linq join的用法)
        /// List《dynamic》 Result = basebll_Jyxt.GetJoinList《Sys_User, Sys_User_BC, string, dynamic》(a => a.Guid, g => g.Guid,
        /// (a, g) => new {a.Area,a.IsValid,a.UserId,g.Guid, g.GCLB });
        /// </summary>
        /// <typeparam name="TOuter">第一张表对应实体类</typeparam>
        /// <typeparam name="TInner">第二张表对应实体类</typeparam>
        /// <typeparam name="TKey">连接的字段的类型</typeparam>
        /// <typeparam name="TResult">返回的实体类型</typeparam>
        /// <param name="outerKeySelector">第一张表对应的连接字段</param>
        /// <param name="innerKeySelector">第二张表对应的连接字段</param>
        /// <param name="resultSelector">需要查询的字段</param>
        /// <param name="IsLeftJoin">是否left join,true表示left join,false表示inner join</param>
        /// <returns>结果实体</returns>
        public List<TResult> GetJoinList<TOuter, TInner, TKey, TResult>(Expression<Func<TOuter, TKey>> outerKeySelector,
            Expression<Func<TInner, TKey>> innerKeySelector, Expression<Func<TOuter, TInner, TResult>> resultSelector, Boolean IsLeftJoin)
            where TOuter : class
            where TInner : class
            where TResult : class
        {
            using (SysDb<TOuter, TInner> db = new SysDb<TOuter, TInner>(strConn))
            {
                if (IsLeftJoin)
                {
                    return db.Set<TOuter>().LeftOuterJoin(db.Set<TInner>(), outerKeySelector, innerKeySelector, resultSelector).ToList();
                }
                else
                {
                    return db.Set<TOuter>().Join(db.Set<TInner>(), outerKeySelector, innerKeySelector, resultSelector).ToList();
                }
            }
        }

调用      

      List<dynamic> Result = basebll_Jyxt.GetJoinList<Sys_User, Sys_User_BC, dynamic, dynamic>
                ((a => new { a.Guid, a.UserId }), (g => new { g.Guid, UserId = g.UserIdBcId }),
                 (a, g) => new { a.Area, a.IsValid, a.UserId, g.Guid, g.GCLB }, false);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值