You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单查询实现Dictionary与Word表左连接并统计词数?

单查询实现词典与单词表的左连接及统计需求

现有数据库表

Dictionary表

IDName
1English
2Italian

Word表(通过DictionaryID关联Dictionary表)

IDDictionaryIdWord
11A
21B
32C

需求说明

通过一次查询实现Dictionary与Word表的左连接,返回Dictionary表的所有字段,同时将Word表中对应词典的行数统计值存入名为WordNumber的字段。对应的实体类定义如下:

public class Dictionary
{
    public long ID { get; set; }

    [Collation("NOCASE")]
    public string Name { get; set; }

    [Ignore]
    public long WordNumber { get; set; }
}

现有实现及问题

目前已实现两个独立函数:

  • 基于文本搜索返回词典列表的函数:
public async Task<List<Dictionary>> GetDictionariesForSearchAsync(string search)
{
    await Init();
    return await Database.Table<Dictionary>()
        .Where(w => w.Name.ToLower().Contains(search.ToLower()))
        .ToListAsync();
}
  • 单独统计每个词典对应单词数量的函数:
public async Task<long> GetRecordNumberForDictionary(long id)
{
    long num = await Database.Table<Word>().Where(i => i.DictionaryId == id).CountAsync();
    return num;
}

但这种方式存在重复查询的问题,单查询的效率更高。尝试寻找类似GroupBy的分组统计方法未果,参考William的代码后有了相关思路,现寻求单查询的解决方案。

内容的提问来源于stack exchange,提问作者Enrico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:52:18