LiteDB Find () с датой DateTime.Year ничего не дало - PullRequest
0 голосов
/ 15 апреля 2019

При использовании метода экземпляра LiteCollection Find () я передавал предикат в качестве параметра. Это метод Find (): stus.Find(s => s.Birthday.Year <= 1996);, а полный код здесь:

Student.cs:

public class Student
{
    public ObjectId ID { get; set; }
    public string Name { get; set; }
    public int Grade { get; set; }
    public DateTime Birthday { get; set; }
}

Program.cs:

class Program
{
    static void Main(string[] args)
    {
        using (var db = new LiteDatabase("test.db"))
        {
            LiteCollection<Student> stus = db.GetCollection<Student>("students");

            List<Student> studentList = new List<Student>()
            {
                new Student() {Name = "Nguyen Hoang Nguyen", Birthday = new DateTime(1997, 6, 3), Grade = 8},
                new Student() {Name = "Nguyen Anh Tuan", Birthday = new DateTime(1997, 7, 12), Grade = 8},
                new Student() {Name = "Pham Van Hung", Birthday = new DateTime(1996, 3, 26), Grade = 9}
            };

            stus.Insert(studentList);

            var filteredStudents = stus.Find(s => s.Birthday.Year <= 1996);

            Console.WriteLine("Student who has birth year before 1996:");
            foreach (Student filteredStudent in filteredStudents)
            {
                Console.WriteLine($"- {filteredStudent.Name}, grade: {filteredStudent.Grade}");
            }

            Console.ReadKey();
            stus.Delete(_ => true);
        }
    }
}

Но filteredStudents не содержит учеников, на консоль была выведена только строка "Student who has birth year before 1996:". Так что-то здесь не так или я что-то здесь упустил? Спасибо, что прочитали мой вопрос.

...