Le code suivant doit renvoyer tous les codes-barres qui sont dans le filtre. cependant, il semble exécuter le filtre uniquement sur le premier nouvel enregistrement.O WH EN CLAUSE pour LINQ to XML
le xml contient 5 nouveaux enregistrements avec un sous-élément de code à barres allant de 1 à 5. Si le filtre contient 1,3 et 4, il renvoie 1 et si le filtre contient 2,3 et 4, il renvoie un aucun enregistrement.
La configuration actuelle (rpa.XMLData.Elements ("NEWFILE"). Elements ("NEWRECORD")) renvoie 5 lignes. J'ai essayé de voir ce qui se passe si je change cela pour revenir en une seule ligne (rpa.XMLData.Elements ("NEWFILE")) mais cela fait la même chose en me renvoyant 1 résultat étant le premier coup, en ignorant 3 et 4.
Y a-t-il un moyen de changer cette déclaration LINQ pour réellement regarder à travers tous les codes à barres?
edit: l'information provient d'un test atm donc désolé si ça a l'air un peu bizarre. J'ai ajouté des informations sur le xml et le filtre.
aussi, j'ai trouvé quelque chose en plus sur le problème si le filtre
contient 1,2,3 cela fonctionne. filtre contient 1,2,4 il reviendra 1 et 2 pas 4.
il semble se casser une fois qu'il ne peut pas trouver une solution.
String string2Stream = String.Concat("2", Environment.NewLine, "3", Environment.NewLine, "4", Environment.NewLine, "End");
Stream reader = new MemoryStream(ASCIIEncoding.Default.GetBytes(string2Stream));
StreamReader read = new StreamReader(reader);
var filter = Enumerable.Where(StreamReaderToSeq(read), x => { int temp; return int.TryParse(x, out temp); });
var query = from p in rpa.XMLData.Elements("NEWFILE").Elements("NEWRECORD")
where filter.Contains(p.Element("BAR_CODE").Value)
select new { p.Element("BAR_CODE").Value };
Sous le xml j'ai supprimé beaucoup de choses supplémentaires qui ne devraient pas être liées.
<?xml version=\"1.0\"?>
<NEWFILE>
<NEWRECORD num=\"1\"><MAILSORT></MAILSORT><BAR_CODE>1</BAR_CODE>
</NEWRECORD>
<NEWRECORD num=\"2\"><MAILSORT></MAILSORT><BAR_CODE>2</BAR_CODE>
</NEWRECORD>
<NEWRECORD num=\"3\"><MAILSORT></MAILSORT><BAR_CODE>3</BAR_CODE>
</NEWRECORD>
<NEWRECORD num=\"4\"><MAILSORT></MAILSORT><BAR_CODE>4</BAR_CODE>
</NEWRECORD>
<NEWRECORD num=\"5\"><MAILSORT></MAILSORT><BAR_CODE>5</BAR_CODE>
</NEWRECORD>
</NEWFILE>
S'il vous plaît montrer un court mais complet exemple - nous ne pouvons pas voir le XML ou comment vous construisez « filtre » pour le moment. –