2016-04-05 3 views
1

Bien que DocumentDb établit des comparaisons de gamme de cordes,Documentdb requête LINQ avec comparaison de chaînes

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

Vous pouvez également construire des requêtes DocumentDB Linq comme celui-ci.

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;

de Issues Doing a String Comparison in LINQ

Je ne peux pas construire dynamiquement des requêtes de comparaison de chaînes Linq LINQ Expressions:

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

produit la sortie suivante.

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

Il semble, l'API DocumentDB ne supporte pas Invoke et il ne supporte pas "Comparer". Il supporte "CompareTo" comme décrit ci-dessus mais pas lors de la construction dynamique d'un arbre d'expression Linq. Toutes les suggestions grandement appréciées.

Répondre

0

Essayez cette façon (où est le point C# représentation de votre objet):

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

Hope this helps!