Native Queries for Persistent Objects
by William R. Cook and Carl Rosenberger

Example 1:

(a) 

// Java
public class Student {
   private String name;
   private int age;
   public String getName(){
      return name;
   }
   public int getAge(){
      return age;
   }
}

(b)

// C#
public class Student {
   private string name;
   private int age;
   public string Name {
      get { return name; }
   }
   public int Age {
      get{ return age; }
   }
}

Example 2:

(a)

String oql = "select * from student in AllStudents where student.age < 20";
OQLQuery query = new OQLQuery(oql);
Object students = query.execute();

(b)

Query query = persistenceManager.newQuery(Student.class, "age < 20");
Collection students = (Collection)query.execute();

(c)

Query query = database.Query();
query.Constrain(typeof(Student));
query.Descend("age").Constrain(20).Smaller();
IList students = query.Execute();

Example 3: 

(a)

// Java
student.getAge() < 20
(b)

// C#
student.Age < 20

Example 4:

(a)

// Java
student.getAge() < 20 && student.getName().contains("f")

(b)

// C#
student.Age < 20 && student.Name.Contains("f")


Example 5:

// pseudo-Java
(Student student){
  return student.getAge() < 20
    && student.getName().contains("f");
}

// pseudo-C#
(Student student){
  return student.Age < 20
    && student.Name.Contains("f");
}


Example 6: 

(a)

// Java
new Predicate(){
  public boolean match(Student student){
    return student.getAge() < 20
     && student.getName().contains("f");
  }
}

(b)

// C#
delegate(Student student){
  return student.Age < 20
    && student.Name.Contains("f");
}


Example 7: 

// Java
public abstract class Predicate <ExtentType> {
  public <ExtentType> Predicate (){}
  public abstract boolean match (ExtentType candidate);
}


Example 8:

new Predicate <Student> () {
  public boolean match(Student student){
    return student.getAge() < 20
      && student.getName().contains("f");
  }
}

Example 9:

(a)

// Java
List <Student> students = database.query <Student> (
  new Predicate <Student> () {
    public boolean match(Student student){
      return student.getAge() < 20
        && student.getName().contains("f");
    }
});

(b)

// C#
IList <Student> students = database.Query <Student> (
  delegate(Student student){
    return student.Age < 20
     && student.Name.Contains("f");
});


Example 10:

// Java
List <Student> students = database.query <Student> (
   new Predicate <Student> () {
     public boolean match(Student student){
       return student.getAge() < 20 && student.getName().contains("f"); 
    }
});
Collections.sort(students, new Comparator <Student>(){
  public int compare(Student student1, Student student2) {
    return student1.getAge() - student2.getAge();
  }
});





3


