2016-04-05 6 views
1

Obwohl DocumentDb String Bereich Vergleiche unterstützt,Documentdb Linq-Abfrage mit String-Vergleich

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

Sie können auch DocumentDB Linq Abfragen wie folgt konstruieren.

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;

von Issues Doing a String Comparison in LINQ

Ich bin nicht in der Lage dynamisch Linq String-Vergleich Abfragen mit Linq-Ausdrücke zu konstruieren:

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

erzeugt die folgende Ausgabe.

(Invoke((x, y) => x.CompareTo(y), x.state, "NY") > 0)

Es scheint, wird die DocumentDB API unterstützen Invoke nicht und es nicht unterstützt "Vergleichen". Es unterstützt "CompareTo" wie oben beschrieben, aber nicht beim dynamischen Konstruieren eines Linq-Ausdrucksbaums. Irgendwelche Vorschläge sehr geschätzt.

Antwort

0

es auf diese Weise versuchen (wo Artikel der C# Darstellung des Objekts ist):

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

hoffe, das hilft!