Projecting into an X-DOM
You can also use LINQ queries to project into an X-DOM. The source can be anything over which LINQ can query, such as:
LINQ to SQL
TablesA local collection
Another X-DOM
Regardless of the source, the strategy is the same in using LINQ to emit an X-DOM: you first write a functional construction expression that produces the desired X-DOM shape, and then build a LINQ query around the expression.
For instance, suppose we wanted to retrieve customers from a database into the following XML:
<customers><customerid="1"><name>Sue</name><buys>3</buys></customer>...</customers>
We start by writing a functional construction expression for the X-DOM using simple literals:
var customers =
new XElement ("customers",
new XElement ("customer", new XAttribute ("id", 1),
new XElement ("name", "Sue"),
new XElement ("buys", 3)
)
);We then turn this into a projection and build a LINQ query around it:
var customers =
new XElement ("customers",
from c in dataContext.Customers
select
new XElement ("customer",
new XAttribute ("id", c.ID),
new XElement ("name", c.Name),
new XElement ("buys", c.Purchases.Count)
)
);Here’s the result:
<customers><customerid="1"><name>Tom</firstname><buys>3</buys></customer><customerid="2"><name>Harry</firstname><buys>2</buys></customer>...</customers>
The outer query in this case defines the line at which the query
transitions from being a remote LINQ to SQL query to a local LINQ to
enumerable query. XElement’s constructor doesn’t know ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access