0

Given the code:

public class Audit {
    public Audit {
        Details = new List<AuditDetail>();
    }
    public virtual IList Details { get; set; }
    public virtual string SourceFile { get; string }
    public virtual DateTime Timestamp  { get; set; }
    public virtual long Id { get; set; }
}

public class AuditDetail {
    public virtual string CardNumber { get; set; }
    public virtual string Message { get; set; }
    public virtual Audit MyAudit { get; set; }
    public virtual long Id { get; set; }
}

How do I query over these one-to-many relation to return a list of object with SourceFile, CardNumber and Message values filtered for example by Timestamp using LINQ? Thanks in advance.

LEMUEL ADANE
  • 8,336
  • 16
  • 58
  • 72

1 Answers1

2

The constructor for your Audit class is missing parenthesis.

However, if I understand your question correctly, the following should lead you in the right direction.

 from a in session.Query<Audit>()
 join d in session.Query<AuditDetail>() on a.Id equals d.MyAudit.Id
 where a.Timestamp <= DateTime.Now
 select new { a.SourceFile, d.CardNumber, d.Message });

You may replace <= DateTime.Now with your preferred criteria.

kagundajm
  • 1,152
  • 1
  • 15
  • 26