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;
结果