0

嗨,谁能回答我为什么这个 linq 查询不会按日期返回?

DocumentStore store = new DocumentStore { Url = "http://localhost:8080/" };
store.Initialize();

using (var session = store.OpenSession())
{
    bool carExists = session.Query<Car>().Any(c => c.CarId == 1);

    if (!carExists)
    {
        Car myNewCar = new Car
            {
                CarId = 1,
                ManufactureDate = new DateTime(2010, 1, 1),
                Name = "Porshe"
            };

        session.Store(myNewCar);
        session.SaveChanges();
    }

    IQueryable<Car> cars = session.Query<Car>()
            .Where(c => c.ManufactureDate == new DateTime(2010, 1, 1));

    foreach (var car in cars)
    {
        Console.WriteLine(car.Name);
    }

    Console.ReadKey();
}
4

1 回答 1

2

您的索引在第二次查询时已过时。查看文档

此外,您的第一个查询应该是 a Load。查看文档

DocumentStore store = new DocumentStore { Url = "http://localhost:8080/" };
store.Initialize();

using (var session = store.OpenSession())
{
    bool carExists = session.Load<Car>(1) != null;

    if (!carExists)
    {
        Car myNewCar = new Car
            {
                CarId = 1,
                ManufactureDate = new DateTime(2010, 1, 1),
                Name = "Porshe"
            };

        session.Store(myNewCar);
        session.SaveChanges();
    }

    IQueryable<Car> cars = session.Query<Car>()
            .Customize(x=> x.WaitForNonStaleResults()) // only for testing!
            .Where(c => c.ManufactureDate == new DateTime(2010, 1, 1));

    foreach (var car in cars)
    {
        Console.WriteLine(car.Name);
    }

    Console.ReadKey();
}
于 2013-01-17T17:39:00.323 回答