加入条件Linq查询asp.net

时间:2016-03-01 16:40:18

标签: c# asp.net linq-to-sql

潜在客户之间存在一对多的关系 - >活动。我的要求是选择一个只包含一个最近添加的活动的潜在客户(w.r.t.d活动.date_created) 这是我的代码

public List<DOlead> getInactiveLeads(DateTime Start, DateTime End, DOuser user)
    {
        List<lead> ObjLeads = new List<lead>();
        List<DOlead> ObjLead = new List<DOlead>();
        //List<activity> actobj = _Context.activities;
        company comobj = _Context.companies.Where(x => x.id == user.company_id).FirstOrDefault();
        DateTime inactive = DateTime.Today.AddDays(-Convert.ToDouble(comobj.no_activity));
        ObjLead = (from le in _Context.leads
                    join leadstatus in _Context.leads_status on le.lead_status_id equals leadstatus.id
                    join act in _Context.activities on le.id equals act.lead_id 
                    where le.is_converted == false && le.date_created < inactive && le.date_created>Start && le.date_created<End 
                    select new DOlead
                    {
                        id = le.id,
                        title = le.title,
                        is_converted = le.is_converted,
                        street_address = le.street_address,


                    }).OrderByDescending(x => x.title).ToList();


        return ObjLead;

    }

但是它提供了重复潜在客户的匹配数据。 请指导我?

1 个答案:

答案 0 :(得分:0)

您的查询将为潜在客户的每项活动返回一个项目。因此,如果一个潜在客户有5个活动,您将获得5个项目。由于你只是使用lead对象的属性来构建这个DOlead对象,所以你会得到看起来很多重复的东西。

如果您只想查看最近活动的潜在客户,您应该从您关注的窗口中的活动列表开始,区分lead_ids列表,然后提取这些潜在客户。