Технический Разговор о Google: Linus Torvalds на мерзавце
http://www.youtube.com/watch?v=4XpnKHJAok8
страница
сравнения Wiki Мерзавца http://git.or.cz/gitwiki/GitSvnComparsion
Обычно мне нужно одно представление каждого элемента, а не одну последовательность «одного» значений и другую последовательность «двух» значений. Другими словами, я ожидал чего-то вроде:
var items = config.Descendants("item")
.Select(element => Item.FromXElement(element));
Если у вас много атрибутов в одном элементе, я считаю полезным выделить код «создать объект из этого элемента» в отдельный метод (в этом case Item.FromXElement
), а не вставлять все это в запрос. Если Item
не должен знать о своем представлении LINQ to XML, поместите метод где-нибудь, который должен:)
items
тогда IEnumerable
, который вы можете преобразовать в список или что-то еще, что вы хотите сделать.
Конечно, это действительно зависит от того, что вы пытаетесь сделать - а мы этого не делаем. Я действительно знаю, что это означает. Может быть, вы действительно действительно хотите, чтобы каждая «последовательность атрибутов» отдельно ...
Item.FromXElement
выглядела бы примерно так:
public static Item FromXElement(XElement element)
{
string name = (string) element.Attribute("name");
string host = (string) element.Attribute("host");
// etc
return new Item(name, host, ...);
}
(Очевидно, что вы должны создать конструктор с соответствующими параметрами .)
Я бы сделал это:
XDocument config = XDocument.Load("whatever.conf");
var pairs = from q in config.Descendants("item")
select new {
One = (string)q.Attribute("one"),
Two = (string)q.Attribute("two") };
var ones = pairs.Select(pair => pair.One);
var twos = pairs.Select(pair => pair.Two);