Documentdb linq查询与字符串比较

时间:2016-04-05 01:54:18

标签: c# linq azure-cosmosdb

虽然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) => x.CompareTo(y), x.state, "NY") > 0)

看来,DocumentDB API不支持Invoke,它不支持&#34;比较&#34;。它支持&#34; CompareTo&#34;如上所述,但在动态构造Linq表达式树时则不行。任何建议都非常感谢。

1 个答案:

答案 0 :(得分:0)

以这种方式尝试(其中Item是对象的C#表示):

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

希望这有帮助!