我正在编写一个基本的CRM来捕获潜在客户。
您可以为潜在客户添加备注。
我想返回过去两天内没有备注的潜在客户列表。
我无法解决linq查询以启用此功能。
到目前为止,我有以下内容将返回所有潜在客户而无需注释。
vm.LeadsNoNotes = _context.Lead.Include(x => x.Notes).Where(x => x.Notes.Count == 0).Take(10).ToList();
下面是我的模型结构
public class Lead
{
public int LeadId { get; set; }
public DateTime? DateCreated { get; set; }
public DateTime? DateModified { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Telephone { get; set; }
public string Comment { get; set; }
public string Status { get; set; }
public string Source { get; set; }
public string PreferedContactMethod { get; set; }
public string Vehicle { get; set; }
public List<Note> Notes { get; set; }
}
public class Note
{
public int NoteId { get; set; }
public int? LeadId { get; set; }
public int? CreditApplicationId { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
public DateTime NoteDate { get; set; }
public string UserId { get; set; }
[Required]
public string Subject { get; set; }
[DataType(DataType.MultilineText)]
public string Description { get; set; }
}
答案 0 :(得分:1)
假设Note
类具有类似DateCreated
属性的内容,您需要以下引导:
这直接转化为以下条件:
var twoDaysAgo = DateTime.Now.AddDays(-2);
.Where(
x =>
x.Notes.Count == 0
||
x.Notes.All(note => note.DateCreated.Date < twoDaysAgo.Date);
)
注意.Date
- 这可确保只比较日期。如果还应考虑时间,请删除。
此外,即使没有条件的第一部分,这也会起作用,因为All returns true for empty queryables,但这可能有点不直观。
答案 1 :(得分:0)
vm.LeadsNoNotes = _context.Lead.Include(x => x.Notes).Where(x => x.Notes.Count == 0 && x.Notes.DateCreatd > DateTime.Now().AddDays(-2)).Take(10).ToList();
我在where子句中包含了日期比较条件。我还没有测试过上面的代码,但你可以尝试一下。它会给你一个想法。您可以修改日期部分以获得准确的结果。