C#Linq查询使用变量的Descendants方法

时间:2009-09-29 05:43:58

标签: xml linq c#-3.0

我正在尝试使用C#Linq查询Descendants方法使用变量。 这是XML

的一部分
<CourseList>
    <course id="EM220" name="Fundamentals of Mechanics"/>
    <course id="EM305" name="Engineering Tools Seminar"/>
    <course id="EM320" name="Dynamics"/>
</CourseList>

以下是查询:

static void GetAllCourseIds(XElement doc)
{
    IEnumerable<XElement> courseId =
         from ci in doc.Descendants("course") <---want to use a variable
         select ci;
    foreach (XElement ci in courseId)
        Console.WriteLine((string)ci.Attribute("id"));
}

我尝试使用

string c = "course";

然后更换

from ci in doc.Descendants("course") 

from ci in doc.Descendants(c) 

这似乎很容易,但显然不是。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这应该绝对正常。请注意,这里不需要使用查询表达式 - 您可以使用:

static void GetAllCourseIds(XElement doc, string elementName) 
{ 
    IEnumerable<XElement> courseId = doc.Descendants(elementName);
    foreach (XElement ci in courseId)
    {
        Console.WriteLine((string)ci.Attribute("id"));
    }
}

如果由于某种原因这对您不起作用,请说明出了什么问题。 (在提问时,总是一个好主意。)