代码之家  ›  专栏  ›  技术社区  ›  bit

linq到cosmosdb sql api的逻辑和

  •  1
  • bit  · 技术社区  · 6 年前

    我在试着 AND 多重LINQ(相当于lambda) Expression 变成一个 where 子句查询本地COSMOSDB仿真器。

    结果查询如下所示:

    SELECT * FROM root 
    WHERE ((root["ActivityName"] IN ("Run")) & (root["CreatedByUser"]["Id"] IN (10023))) 
    ORDER BY root["CreatedOnUtc"] DESC
    

    注意按位 & 查询中的运算符。这导致没有结果作为结果,尽管事实上匹配结果实际上存在于COSMODB中。

    当我运行这个查询时,我会得到结果

    SELECT * FROM root 
    WHERE ((root["ActivityName"] IN ("Run")) AND (root["CreatedByUser"]["Id"] IN (10023))) 
    ORDER BY root["CreatedOnUtc"] DESC
    

    我用于组合多个lambda表达式的代码大致如下:

    Expression.And(first, second);
    

    可以找到它的详细信息 here 以下内容:

    如何组合 表达 s以生成具有逻辑 以及 而不是聪明的 & ?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Nick Chapsas    6 年前

    Expression.AndAlso(first, second); 是你需要的。

    正如你所说, Expression.And 表示按位 AND 运行时 Expression.AndAlso 表示条件(您称之为逻辑) 以及 操作。