- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
进一步考虑下面的完整代码块,特别是这部分 - 对象初始化(你会这么称呼它吗?):
new LocalFileInfo() {
IsFavorite = p.IsFavorite,
...
WhenCrawled = p.WhenCrawled
}
public static List<LocalFileInfo> RecentlyCrawledFiles(int take)
{
if (take < 1) take = 1;
List<LocalFileInfo> list = new List<LocalFileInfo>();
using (SQLite.Net.SQLiteConnection conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), sqliteDb))
{
// works but is slower.
// list = (from p in conn.Table<LocalFileInfo>() select p).OrderBy(f => f.WhenCrawled).Take(take).ToList();
list = (from p in conn.Table<LocalFileInfo>() select new LocalFileInfo() {
IsFavorite = p.IsFavorite,
LastModified = p.LastModified,
Name = p.Name,
ParentFolder = p.ParentFolder,
Path = p.Path,
Size = p.Size,
SourceId = p.SourceId,
SourceName = p.SourceName,
SourceType = p.SourceType,
WhenCrawled = p.WhenCrawled
})
.OrderByDescending(f => f.WhenCrawled)
.Take(take)
.ToList();
};
return list;
}
最佳答案
我在 SQLite-net 中查看了 master 分支的源代码
该库似乎忽略了您的预测,因此我认为对它们进行表达不会有任何帮助
例如见 SqlLite.cs
TableQuery<T>
类(class)
public IEnumerator<T> GetEnumerator ()
{
if (!_deferred)
return GenerateCommand("*").ExecuteQuery<T>().GetEnumerator();
return GenerateCommand("*").ExecuteDeferredQuery<T>().GetEnumerator();
}
GetEnumerator()
每次执行
ToList()
时都会使用方法或
foreach (var item in query)
.
GenerateCommand()
将构建 SQL,它“理论上”支持字符串参数
selectList
,但库永远不会使用这个参数
Select(Expression)
库存储一个
_selector
私有(private)属性(property),但绝不会在调用
GenerateCommand()
时使用它,或任何其他调用
var list = conn.Table<LocalFileInfo>()
.OrderByDescending(f => f.WhenCrawled)
.Take(take)
.ToList();
Select<T>()
在此之后,但库已经加载了整个实体列表以及每个属性。但是,如果您保留这些实体,那么事后选择可能会帮助您进行 GC(也就是说,
ToList()
之后的投影不会给您带来任何立竿见影的 yield )。
Query<T>()
从连接对象...这将带您回到 SQL 领域。
Xamarin works in some scenarios but has not been fully tested as a supported scenario.
Select(p => p.IsFavorite)
图书馆将惨遭失败,因为它无法映射您的投影(不是抨击图书馆,只是提醒一下)
关于c# - SQLite-net TableQuery<T>.Select() 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171829/
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我正在尝试概括一个函数,以使用 filter 过滤掉 slick 中的一些 TableQuery,因此我创建了以下方法: def fetchCoffee(coffe: String)(p: MyTab
有没有办法在 Azure 中查询与特定正则表达式匹配而不仅仅是相等的 PartitionKey? 例如: 我的 Azure 存储表分区键:CA94568、CA92122、CA92092、WA98005
有没有办法在 Azure 中查询与特定正则表达式匹配而不仅仅是相等的 PartitionKey? 例如: 我的 Azure 存储表分区键:CA94568、CA92122、CA92092、WA98005
我正在尝试找到延续 token 和 Azure 存储库 2.0 问题的明确答案,因为 2.0 之前的版本 (StorageClient) 和当前版本 (Storage) 之间似乎存在显着差异。 除了没
我想使用简单的 TableQuery 从我的 Azure 表中获取前 n 行。但使用下面的代码,无论我对 Take 的限制如何,都会获取所有行。 我做错了什么? int entryLimit = 5;
我正在尝试对我的 CloudTable 进行查询。我之前所做的是获取某个表的所有元素,但这需要很多时间。 public static List GetCollectItems(string conne
使用 Azure 存储 4.3.0 并为了使用 CloudTable.ExecuteQuerySegmentedAsync (TableQuery, TableContinuationToken)我需
我正在尝试对我的 CloudTable 进行查询。我之前所做的是获取某个表的所有元素,但这需要很多时间。 public static List GetCollectItems(string conne
在 slick 中,我有一个看起来像这样的设置: class Users(tag: Tag) extends Table(tag) { def name = column[String] de
我真的是 Slick 和 Scala 的新手,我正在努力使用 id 列表过滤查询。 productsNeededIds // = "1,2,3,4,5" - list of Ids of produc
我遇到了类似于 this 的问题 但我使用的是 scala 2.11.1、slick 3.2.0,并使用 SBT 手动编译,而不是使用 IntelliJ。 我已经为数据库定义了一个 dntity: 案
我通过以下方法公开我的表: public static class TableCacheService { public static IEnumerable Read() {
如何为使用 AND 和 foreach 循环附加条件的 myQuery 分配初始值。 我正在尝试执行以下操作: string myQuery = string.empty; foreach (stri
我需要使用 Azure 表存储执行诸如批量获取之类的操作。我有一个已知 RowKey 和 PartitionKey 的列表,我想检索每一个。 我想知道是否有比单独查询每个实体更好的方法 - 比如批量
假设我有以下特征。 trait ModelTrait{ def id: Option[Long] def name: String } 而且我有两个表。它们的案例类和 tableQuery 字
进一步考虑下面的完整代码块,特别是这部分 - 对象初始化(你会这么称呼它吗?): new LocalFileInfo() { IsFavorite = p.IsFavorite, ...
使用 scala、slick 2.0 和 eclipse 我遇到一个无法解释的错误:“value ddl 不是 scala.slick.lifted.TableQuery[SqliteSpec.thi
我有这个基本特征 trait MyBase { type M type T TableQueryBuilder.builderForTable) 提供该类型类的一个实例。然后,您可以定义一个方
我需要从 Azure 存储表中检索 50.000 个实体,结果应放入列表中。检索实体并不需要太多时间,但将它们从 Iterable 放入 List 需要相对较长的时间,大约 10 秒。我怎样才能在更短
我是一名优秀的程序员,十分优秀!