LINQ左联接

右联结换汤不换药,这个联结的概念不仅适用于SQL,对象列表也可以

            var list = (from objSubject in listSubjectDetail
                        join objBalance in listBalance on objSubject.AccountSubjectDetail equals objBalance.GameChannelName
                            into temp
                        from tt in temp.DefaultIfEmpty()
                        select new
                        {
                            objSubject.AccountSubject,
                            objSubject.AccountSubjectDetail,
                            InitialBalance = tt == null ? 0 : tt.Balance,
                            objSubject.DebitAmount,
                            objSubject.CreditAmount,
                            //join为空时的处理
                            FinalBalance = (tt == null ? 0 : tt.Balance) + objSubject.DebitAmount - objSubject.CreditAmount,
                            objSubject.JournalEntryTime
                        }).ToList();

多表连接

   var query = from t1 in dt.AsEnumerable()
                        join t2 in dt2.AsEnumerable()
                        on t1.Field<int>("Addressid") equals t2.Field<int>("Addressid") into tmp
                        join t3 in dt3.AsEnumerable()
                         on t1.Field<int>("userid") equals t3.Field<int>("userid")
                        from t in tmp.DefaultIfEmpty()
                        orderby t1.Field<DateTime>("insertdate") descending
                        select new
                        {
                            Name = t1.Field<string>("Name"),
                            RealName = (t == null) ? string.Empty : t.Field<string>("RealName"),
                            nickname = t3.Field<string>("nickname")
                        };

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值