Try this code. It is a slight modification of your posted code.
Corrections:
1. You didn't use the misspelled element in your query.
strategy should be
strtergy
(This is why it is a bad idea to let misspelled variables and names slip through)
2. The code
r.Descendants(sch + "exposure")
will give you the whole node, not the content of the node.
Use
r.Element("physical").Value
instead.
3. I have no idea what
sch is supposed to mean, so I removed it. Works much better.
[UPDATE] Changed to use let r = i.
Elements("physicals") instead of Element.
XDocument xDoc = XDocument.Parse(strxml);
var strategylist = (from i in xDoc.Root.Elements("strtergy")
let r = i.Elements("physicals")
select new
{
StrategyName = i.Element("name").Value,
Physical = r.Elements("physical").ToList(),
Exposure = r.Elements("exposure").ToList()
}).ToList();
[UPDATE2] Get multiple results as a comma separated list
XDocument xDoc = XDocument.Parse(strxml);
var strategylist =
(from i in xDoc.Root.Elements("strtergy")
let r = i.Elements("physicals")
select new
{
StrategyName = i.Element("name").Value,
Physical = string.Join(",", r.Elements("physical").Select(x => x.Value)),
Exposure = string.Join(",", r.Elements("exposure").Select(x => x.Value))
}).ToList();
var physical1 = strategylist[0].Physical;
Will contain: "...,...,..."