【问题标题】:How to query SQLite for whether a record exists?SQLite如何查询一条记录是否存在?
【发布时间】:2012-11-21 12:08:07
【问题描述】:

在下面注释掉的行中,PlatypusId 是红色的/无法识别,尽管它确实存在于相应的表中。

在对 queryResult 的多行跨越赋值中,PlatypusId、where 和 count 为红色/无法识别。

    //var queryResult = await conn.Table<PlatypiRequested>().CountAsync().(x => x.PlatypusId.Equals(personId));
    var queryResult = from p in PlatypiRequested
                      where p.PlatypusId.Equals(platypusId)
                      select count;

IOW,当我添加这个时:

    var conn = new SQLiteAsyncConnection(SQLitePath);
    var queryResult = await conn.Table<PlatypiRequested>().CountAsync().(x => x.

...在“x => x”之后没有任何可能性。

查询我的 SQLite 表需要什么样的代码?

我正在使用 SQLite-net 包/扩展,但它的文档(什么文档?)并不过分冗长。纵观 SQLite.cs 和 SQLiteAsync.cs,我一点也不聪明……

更新

好的,Harvey 先生的回答评论让我找到了这个工作代码(Count() 不可用,只有 CountAsync()):

public async Task<bool> PlatypusAlreadyAdded(string platypusId)
{
    var conn = new SQLiteAsyncConnection(SQLitePath);
    var queryResult = await conn.Table<PlatypiRequested>().Where(x => x.PlatypusId == platypusId).CountAsync();
    return queryResult > 0;
}

正如 Jackie DeShannon(与我无关,AFAIK)所唱的那样,“世界现在需要的是“用于 C# Windows Store 应用程序的 SQLite/SQLite-net”一书(或者至少是一篇冗长/内容丰富的博文,包含所有常见类型的 SQL 语句 (CRUD) 的示例)。

【问题讨论】:

  • 我认为你真正要找的是var queryResult = await conn.Table&lt;PeopleRequested&gt;().Where(x =&gt; x.someField == someValue).CountAsync(); 你的方法行不通,因为最后一个 . 运算符期待一个方法调用,而不是一个左括号或 lambda表达。
  • 听起来很有希望,但这: var queryResult = await conn.Table(x => x.PlatypusId == platypusId).CountAsync(); ...仍然无法识别 x.PlatypusId,并且我收到错误消息,“方法 'Table' 没有重载需要 1 个参数。
  • 我在您输入评论时编辑了我的评论。 :) 请注意,如果您使用 await,您可能不需要 Count() 的异步版本(或 SQLite 中的任何其他异步函数),因为 await 已经在幕后为您修改了代码使其异步。
  • 另请注意,Count() 扩展方法有an overload,它将条件作为参数。
  • 让它成为答案而不是评论,我会这样标记它。

标签: c# linq sqlite windows-store-apps sqlite-net


【解决方案1】:

我认为你真正想要的是类似

var queryResult = await conn.Table<PeopleRequested>()
                            .Where(x => x.someField == someValue)
                            .CountAsync();  

你的方法行不通,因为最后一个 . 运算符期待的是方法调用,而不是左括号或 lambda 表达式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 2011-02-16
    相关资源
    最近更新 更多