Да, это возможно с использованием метода Linqs ToDictionary .
Вы должны быть в состоянии сказать
ArticleFrequency = (from tag in story.Descendants("tag")
select new
{
Key = (string)tag.Element("name"),
Value = (int)tag.Element("count")
}).ToDictionary(val => val.Key, val => val.Value)
Ваша ArticleFrequency
собственность, конечно, должна быть типа IDictionary<string, int>
ОБНОВЛЕНИЕ Чтобы ответить на ваш вопрос в комментариях (если я правильно понимаю), просто измените Выберите , чтобы получить Enumerable желаемого типа, например
ArticleFrequency = (from tag in story.Descendants("tag")
select new MyCustomObject()
{
MyPropertyOne = (string)tag.Element("name"),
MyPropertyTwo = (int)tag.Element("count")
})
назначит IEnumerable<MyCustomObject>
для ArticleFrequency. Если вы говорите, что хотите, чтобы ArticleFrequency имел тип Stack, вы можете просто обернуть весь запрос Linq и использовать его в качестве параметра IEnumerable для перегрузки конструктора стека например,
ArticleFrequency = new Stack<KeyValuePair<string, int>>(
(from tag in story.Descendants("tag")
select new KeyValuePair<string, int>()
{
Key = (string)tag.Element("name"),
Value = (int)tag.Element("count")
}))