您的位置:首页 > 编程语言 > C#

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

2017-10-26 11:27 441 查看


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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# linq
相关文章推荐