[LINQ] Leta i XML efter ord som har viss första bokstav?

Permalänk

[LINQ] Leta i XML efter ord som har viss första bokstav?

Jag har en xml-databas ur vilken jag vill extrahera alla ord som börjar på en viss bokstav.

Jag vet hur jag kan få ut ett visst element genom att definiera hela ordet:

var myQurey = from s in doc.Descendants("Word") where (string)s.Element("Element0") == "hello" select new Word(s);

Men hur kan jag söka igenom alla Element0 för alla ord som börjar på bokstav h, ex?

Min första tanke är förstås att använda Substring (som nedan), men det tycks inte funka med Linq.

var myQurey = from s in doc.Descendants("Word") where (string)s.Element("Element0").Substring(0,1) == "h" // FUNKAR EJ select new Word(s);

[edit]

Ah, missade att sätta element till value. Nu funkar det

var myQurey = from s in doc.Descendants("Word") where (string)s.Element("Element0").Value.Substring(0,1) == "h" // FUNKAR EJ select new Word(s);

Visa signatur

Bro!

Permalänk
Medlem

Annars finns ju startswith..

string test = "Hejsan"; if (test.StartsWith("H")) { }

Visa signatur

EPoX 8RDA+, XP2500+, 2x256Mb PC3200 (DualCh), Club3D 9800PRO, Seagate 7200.7 160Gb 8Mb Limited edition

Permalänk
Medlem

Var inte 100 på vad exakt du ville ha fram, så exemplen är på både filtrering av värden och nod namn.

var xml = XElement.Load ( "CustomDictionary.xml" ); // get all recognized words that begins with the letter 'a'.. var query1 = from s in xml.Descendants ( "Recognized" ).Elements ( "Word" ) where s.Value.StartsWith ( "a" ) select new { FilteredElement = s }; // get all the descended elements from 'Words' starting with the letter 'D'.. example 'Depricated' and 'Disposed'.. var query2 = from s in xml.Descendants ( "Words" ).Elements ( ).Where ( x => x.Name.ToString ( ).StartsWith ( "D" ) ) select new { FilteredElement = s };