【SqlSugar】聯合查詢、分組,二個Queryable的Join


sqlsugar的關聯查詢,mysql查詢轉sqlsugar,記錄下,供下次遇到查閱

mysql:

select * from (
select a.MchId,a.mchs,b.enables from (
select MchId, COUNT(MchId) mchs from mchchannelinfo where MchId in(select MchId from mchchannelinfo where InputState = 1 and Channel != 4) and Channel !=4 GROUP BY MchId
-- ORDER BY MchId
) a
INNER JOIN
(
select MchId, COUNT(IsEnable) enables from mchchannelinfo where MchId in(select MchId from mchchannelinfo where InputState = 1 and Channel != 4) and Channel !=4 and IsEnable=0 GROUP BY MchId
-- ORDER BY MchId
) b
on a.MchId = b.MchId
) c where c.mchs = c.enables;

 

sqlsugar:

var success_mchs = _sqlSugarClient.Queryable<MchChannelInfo>().Where(s => s.InputState == InputStateEnum.成功 && s.Channel != ChannelEnum.雲商通).Select(s => s.MchId).ToList();
var mchs = _sqlSugarClient.Queryable<MchChannelInfo>().Where(s => s.Channel != ChannelEnum.雲商通 && success_mchs.Contains(s.MchId)).GroupBy(s => s.MchId).Select(s => new MchInnerView { MchId = s.MchId, ids = SqlFunc.AggregateCount(s.MchId) });
var enables = _sqlSugarClient.Queryable<MchChannelInfo>().Where(s => s.Channel != ChannelEnum.雲商通 && success_mchs.Contains(s.MchId) && s.IsEnable == false).GroupBy(s => s.MchId).Select(s => new MchInnerView { MchId = s.MchId, ids = SqlFunc.AggregateCount(s.IsEnable) });

 

//注:兩個querable的關聯兩個querable需要是實體
var input = _sqlSugarClient.Queryable(mchs, enables, (a, b) => a.MchId == b.MchId).Where((a,b)=>a.ids == b.ids).Select((a, b) => a.MchId).ToList();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM