C# Linq 实现 对表某类型的数据统计

5 篇文章 0 订阅

这里写图片描述
DateTime start = Convert.ToDateTime(startTime);
DateTime end = Convert.ToDateTime(EndTime);
Entity.MP.Num num = new Entity.MP.MicroChannelNum();

var scan = db.text.Where(f => f.MemId == memId && f.Type == 1);   
var follow = db.text.Where(f => f.MemId == memId && f.Type == 2);
var loss = db.text.Where(f => f.MemId == memId && f.Type == 3);
if(channelId != 0)
{
    scan = scan.Where(f => f.ChannelId == channelId);
    follow = follow.Where(f => f.ChannelId == channelId);
    loss = loss.Where(f => f.ChannelId == channelId);
}            
if (!string.IsNullOrEmpty(startTime)&& !string.IsNullOrEmpty(EndTime))
{
    scan = scan.Where(f => f.AddTime >= start && f.AddTime <= end);
    follow = follow.Where(f => f.AddTime >= start && f.AddTime <= end);
    loss = loss.Where(f => f.AddTime >= start && f.AddTime <= end);
}
if (labelId != 0)
{               
    var scans = from a in scan
           join b in db.MicroChannel on a.ChannelId equals b.ID
           join c in db.MicroChannelLabel on b.LabelId equals c.ID
           where c.ID == labelId
           select new
           {
               a.ID,
               a.ChannelId,
               a.UserWxID,
               a.UserOpenId,
               a.AddTime
           };
    var follows = from a in follow
            join b in db.MicroChannel on a.ChannelId equals b.ID
            join c in db.MicroChannelLabel on b.LabelId equals c.ID
            where c.ID == labelId
            select new
            {
                a.ID,
                a.ChannelId,
                a.UserWxID,
                a.UserOpenId,
                a.AddTime
            };
    var losses = from a in loss
            join b in db.MicroChannel on a.ChannelId equals b.ID
            join c in db.MicroChannelLabel on b.LabelId equals c.ID
            where c.ID == labelId
            select new
            {
                a.ID,
                a.ChannelId,
                a.UserWxID,
                a.UserOpenId,
                a.AddTime
            };
    num.Scan = scans.ToList().Count;
    num.Follow = follows.ToList().Count;
    num.Loss = losses.ToList().Count;
    num.Growth = num.Follow - num.Loss;

    return num;
}
num.Scan = scan.ToList().Count;
num.Follow = follow.ToList().Count;
num.Loss = loss.ToList().Count;
num.Growth = num.Follow - num.Loss;

return num;
结果

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值