【问题标题】:Documentdb linq query with string comparison带有字符串比较的 Documentdb linq 查询
【发布时间】:2016-04-05 01:54:18
【问题描述】:

虽然 DocumentDb 支持字符串范围比较,

client.CreateDocumentQuery<Family>( collectionLink, "SELECT * FROM Families f WHERE f.Address.State > 'NY'", new FeedOptions { EnableScanInQuery = true });

您也可以像这样构造 DocumentDB Linq 查询。

var zipLinqQuery = from z in db.ZIPMASTERs where z.CORP == listItem.CORP && z.ZIPBEG.CompareTo(listItem.ZIPCODE) <= 0 && z.ZIPEND.CompareTo(listItem.ZIPCODE) >= 0 select z;

来自Issues Doing a String Comparison in LINQ

我无法使用 Linq 表达式动态构造 Linq 字符串比较查询:

Expression<Func<string, string, bool>> stringCompare = (x, y) => x.CompareTo(y) > 0; return Expression.Invoke(stringCompare, new[] { left, right });

产生以下输出。

(Invoke((x, y) =&gt; x.CompareTo(y), x.state, "NY") &gt; 0)

看来,DocumentDB API 不支持 Invoke,也不支持“比较”。如上所述,它支持“CompareTo”,但在动态构建 Linq 表达式树时不支持。任何建议都非常感谢。

【问题讨论】:

    标签: c# linq azure-cosmosdb


    【解决方案1】:

    试试这个方法(其中 Item 是你的对象的 C# 表示):

    Expression<Func<Item, bool>> filterDateExpression = d => d.DateUploadedUTC.CompareTo(fromS) >= 0 &&
                                                             d.DateUploadedUTC.CompareTo(toS) <= 0;
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多