【问题标题】:In Azure DocumentDb, how do I write an "IN" statement using LINQ to SQL在 Azure DocumentDb 中,如何使用 LINQ to SQL 编写“IN”语句
【发布时间】:2017-04-19 04:52:36
【问题描述】:

我想从 DocumentDb 中按 ID 检索大约 50 - 100 个文档。我在List<string> 中有 ID 列表。如何使用 LINQ to SQL 检索这些文档。我不想将实际的 SQL 查询写成字符串,如:

IQueryable<Family> results = client.CreateDocumentQuery<Family>(collectionUri, "SELECT * FROM family WHERE State IN ('TX', 'NY')", DefaultOptions);

我希望能够使用 lambda 表达式来创建查询,因为我不想将字段名称硬编码为字符串。

【问题讨论】:

    标签: azure azure-cosmosdb


    【解决方案1】:

    您似乎不想生成查询字符串SELECT * FROM family WHERE State IN ('TX', 'NY')并将其传递给查询文档,您可以尝试以下代码。

    List<string> ids = new List<string>() { "TX", "NY" };
    
    client.CreateDocumentQuery<Family>(collectionUri).Where(d => ids.Contains(d.id)); 
    

    【讨论】:

    • 有什么更新吗?回复是否帮助您解决问题?
    • 感谢您的帮助。这给了我正确的结果。但 Note 似乎不准确。这实际上是进行服务器端过滤,而不是内存(客户端)过滤。生成的 SQL 查询有 IN 语句并在服务器上执行。 client.CreateDocumentQuery 返回 IQueryable 而不是 IEnumerable(in-memory)。
    • 我又查了一下,确实是把查询传给了服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2010-11-20
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多