C# 在XML数据源上使用LINQ

C# 在XML数据源上使用LINQ,c#,xml,linq,C#,Xml,Linq,我有一个这样定义的XML集合: XNamespace ns = "http://www.example.com/Modules"; XNamespace ns2 = "http://www.example.com/Modules/Ext"; XDocument doc = new XDocument( new XElement(ns + "Modules", new XAttribute(XNamespa

我有一个这样定义的XML集合:

XNamespace ns = "http://www.example.com/Modules";
XNamespace ns2 = "http://www.example.com/Modules/Ext";


XDocument doc = new XDocument(
                    new XElement(ns + "Modules",
                        new XAttribute(XNamespace.Xmlns + "ns2", ns2 ),
                        new XElement(ns + "Module", "Introduction to LINQ"),
                        new XElement(ns + "Module", "LINQ and C#"),
                        new XElement(ns2 + "Extra", "Extra contect"))
    );
我想打印“模块”元素的值。这是我的密码:

var courses = from e in doc.Descendants("Module")
                let lowname = e.Value.ToLowerInvariant()
                where lowname.Contains("linq")
                orderby e.Value
                select e.Value;

foreach (var course in courses)
{
    Console.WriteLine(course);
}
我不明白为什么我不能检索任何数据。查询错误吗?

在获取项时,还需要指定名称空间

XNamespace ns = "http://www.example.com/Modules";

var courses = from e in doc.Descendants(ns + "Module")
            let lowname = e.Value.ToLowerInvariant()
            where lowname.Contains("linq")
            orderby e.Value
            select e.Value;