代码之家  ›  专栏  ›  技术社区  ›  vgru

使用queryable.where谓词从linq到nhibernate

  •  1
  • vgru  · 技术社区  · 15 年前

    我正在使用linq to nhibernate查询sqlite数据库。

    Person 是包含ID和名称的实体:

    public class Person
    {
        public Guid Id { get; private set; }
        public string Name { get; private set; }
    }
    

    假设我的db表包含一个名为“ 约翰 “。

    此测试按预期工作:

    var query = from item in session.Linq<Person>()
                where (item.Name == "Mike")
                select item;
    
    // no such entity should exist
    Assert.IsFalse(query.Any());
    

    但这次失败了:

    var query = from item in session.Linq<Person>()
                select item;
    query.Where(item => item.Name == "Mike");
    
    // following line actually returns the
    // "John" entry
    Assert.IsFalse(query.Any());
    

    我错过了什么?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Mark Byers    15 年前

    打电话 Where 不更改现有查询,而是创建一个新查询。如果要使用新查询,则需要指定给某个对象。

    var query2 = query.Where(item => item.Name == "Mike");