je index simple RavenDB:RavenDB requête Linq plus et la comparaison inférieure
Carte:
from q in docs.Questions
from Tag in q.Tags
select new { Tag, Count = 1 }
Réduire
from result in results
group result by result.Tag into g
select new { Tag = g.Key, Count = g.Sum(x=>x.Count) }
Et j'ai un code pour l'appeler:
var query = from item in session.Query<TagCount>("Questions/Tags") select item;
Console.WriteLine(query.Count());
foreach (var result in query)
{
Console.WriteLine("{0} - {1}", result.Tag, result.Count);
}
Produire une sortie:
3
Games - 1
RavenDb - 2
Intro - 1
comme prévu. Mais, si ajouter du code après cette boucle:
var counted = from item in query
where item.Count > 0
select item;
Console.WriteLine(counted.Count());
sortie serait:
3
Games - 1
RavenDb - 2
Intro - 1
0
WTF? Pourquoi le compte compté est zéro?
Mais si je '==' en comparaison compté, il fonctionne:
var counted = from item in query
where item.Count == 1
select item;
Console.WriteLine(counted.Count());
Produit
3
Games - 1
RavenDb - 2
Intro - 1
2
Que se passe-t-il?
Qu'obtenez-vous si vous faites ceci: 'var results = session.Query (" Questions/Tags "). ToList(); var count = results.Count; '?? –
compte 3; Et si je change de requête comptée pour sélectionner 'résultat', pas de 'requête' cela fonctionne comme prévu. Mais pourquoi? – l0nley