2009-12-01 2 views
0

Может кто-то помочь с объяснением того, что это значит:Guidance с переводом в Linq к Xml

... .Select(Func<XElement, XElement>selector) 

Пожалуйста, будет понятно, пример того, что должно идти в качестве параметра.

Также было немного сложно назвать этот вопрос. Предложение будет также оценено.

ответ

3

Это функция принимает XElement в качестве аргумента и возвращающая XElement, так, например:

public XElement someFunction(XElement argument) 
{ 
    XElement someNewElement = new XElement(); 
    ... // do something with someNewElement, taking into account argument 
    return someNewElement; 
} 

Func<XElement, XElement> variableForFunction = someFunction; 

.... .Select(variableForFunction); 

Я не interely уверен, что если вы должны присвоить его переменной первым, вы могли бы, вероятно, просто сделать это :

... .Select(variableForFunction); 

дать ему попробовать (и дайте мне знать, если это работает :))

ой и для получения дополнительной информации, вот article MSDN, это также объясняет, как нам е делегатов:

Func<XElement, XElement> variableForFunction = delegate(XElement argument) 
    { 
     ....//create a new XElement 
     return newXElement; 
    } 

и как использовать лямбды, например:

Func<XElement, XElement> variableForFunction = s => { 
    ....;//create an XElement to return 
    return newXElement; 
} 

или, в данном случае, использовать лямбда непосредственно:

.... .Select(s => { 
    ....;//create an XElement to return 
    return newXElement; 
}) 

редактировали следующий комментарий Павла

+0

В общем, 'selector' для' Select() 'должен возвращать новый элемент, а не мутировать переданный ему элемент и возвращать что. Также стоит упомянуть лямбды, поскольку они чаще всего используются в этом контексте, а не как именованные функции. –

+0

+1 Это то, что я пытаюсь сделать. У меня есть силы. Выберите (someFunc), который из вашего объяснения принимает функцию делегата. Меня привлекло то, что я пытаюсь выбрать XElement из объекта, где атрибут соответствует определенному значению. Эти XElements имеют схожие имена, но разные идентификаторы. – Tebo

+0

И я знаю, что ваш ответ - это решение моего вопроса, но не мог бы вы мне помочь в этом комментарии. – Tebo