praeclarum sqlite-net Table().Where(Expression) gives Member access failed to compile expression 异常C#

praeclarum sqlite-net Table().Where(Expression) gives Member access failed to compile expression exception C#

我正在使用 xamarin c# 的 praeclarum sqlite-net 库,当我使用 :

var item = sQLiteConnection.Table<MyClass>()
    .Where(e =>  (e.Id == CurrentId) && (e.name == Currentname));

出现异常:成员访问编译表达式失败

CurrentId 和 Currentname 都有值。 table 确实存在其列。

我的班级是:

public class MyClass 
{
    [Ignore]
    public List<ClassB> Bs{ get; set; }

    public string BsAsJson { get; set; }

    public string Datestamp { get; set; }

    [PrimaryKey]
    public string ClassId { get; set; }

    public string SomeId { get; set; }

    public string name { get; set; }

    public MyClass ()
    { }

    public MyClass (string datestamp, string id)
    {
        Bs= new List<ClassB>();

        Datestamp = datestamp;

        ClassId = id;

        name= "Bagera";

        SomeId= "SomeValue";
    }
}

将 CurrentId 作为参数传递解决了我的问题。

之前,我使用这样的函数,其中 Current Id = StaticClassA.MyStaticList[StaticIndex].Id

public list<MyClass> GettAll()
{
  var item = sQLiteConnection.Table<MyClass>()
      .Where(e =>  (e.Id ==  CurrentId) && (e.name == Currentname));

  return item.ToList();
}

之前的代码会抛出=>异常:成员访问编译表达式失败。

但是,当我将 CurrentId 作为参数传递时,它工作正常:

public list<MyClass> GettAll(string id)
{
  var item = sQLiteConnection.Table<MyClass>()
      .Where(e =>  (e.Id == id) && (e.name == Currentname));

  return item.ToList();
}

我还是不知道有什么区别!

希望这会对某人有所帮助。