This is kinda theoretical question,
I was looking at someone else’ code (below) and my simple solution was to instantiate the collection outside linq, but I can guess there will be cases where I’d want to instantiate the objects inside the query, and perhaps only on a selection of elements.
Here’s a simplified example of how this was being done (badly).
var pods = (from n in ids
where new Node(Convert.ToInt32(n)).HasValue("propertyName")
select new
{
Id = Convert.ToInt32(n),
Url = new Node(Convert.ToInt32(n)).Url,
Name = new Node(Convert.ToInt32(n)).Title()
}).ToList();
Irrelevant Note: in this case the Node constructor is getting data from a memory cache.
How can I improve this example to only instantiate each object once using linq?
Cheers.
Murray.
Use a
letclause like this:For more information please see let clause (C# Reference):