C# 有没有简单的方法返回第一个LinqToXML结果?

C# 有没有简单的方法返回第一个LinqToXML结果?,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,嗯 我有一个LinqToXml查询,它返回一条记录(正确的术语?) 但是,我不想用一个。。循环以从查询中提取该记录。有没有更简单的方法 *如果您能找到更好的方式编写查询,将获得额外奖励(我还在学习) 我的xml文件: <?xml version="1.0"?> <!-- first draft of LibMappings.xml file --> <LibMappings> <File> <Name>Found

我有一个LinqToXml查询,它返回一条记录(正确的术语?)

但是,我不想用一个。。循环以从查询中提取该记录。有没有更简单的方法

*如果您能找到更好的方式编写查询,将获得额外奖励(我还在学习)

我的xml文件:

<?xml version="1.0"?>
<!-- first draft of LibMappings.xml file -->
<LibMappings>
    <File>
        <Name>Foundation.dll</Name>
        <Map>Lib\Foundation</Map>
    </File>
</LibMappings>

基础DLL
图书馆\基金会
我的代码:

private static string GetMapFor(string dllName)
{
        //Opens Xml File and gets "Lib" map for dllName
        string retVal;
    XDocument libMapFile = XDocument.Load(_libMapFilePath);

    //This query will return 1 record
    IEnumerable<XElement> query = from c in libMapFile.Descendants("File")
                            where (string)c.Element("Name") == dllName
                        select c.Element("Map");
    if (query.Count() == 1)
    {
        //there's only gonna be one here.. I might as well do this..
        foreach (string x in query)
        {
            retVal = x;
            break;
        }

        //I'd like to do this:
        retVal = query[0];

    }
        return retVal;
}
私有静态字符串GetMapFor(字符串dllName)
{
//打开Xml文件并获取dllName的“Lib”映射
字符串检索;
XDocument libMapFile=XDocument.Load(_libMapFilePath);
//此查询将返回1条记录
IEnumerable query=来自libMapFile.subjects(“文件”)中的c
其中(字符串)c.Element(“名称”)==dllName
选择c.Element(“Map”);
if(query.Count()==1)
{
//这里只有一个…我也可以这么做。。
foreach(查询中的字符串x)
{
retVal=x;
打破
}
//我想这样做:
retVal=query[0];
}
返回返回;
}
IEnumerable query=来自libMapFile.substands(“文件”)中的c
其中(字符串)c.Element(“名称”)==dllName
选择c.Element(“Map”);
XElement元素=query.First();
返回元素。值;
IEnumerable query=来自libMapFile.substands(“文件”)中的c
其中(字符串)c.Element(“名称”)==dllName
选择c.Element(“Map”);
XElement元素=query.First();
返回元素。值;
试试这个:

选择c.Element(“Map”).First()

或者,如果您不确定结果会如何:

选择c.Element(“Map”).FirstOrDefault()

然后检查null以查看是否有结果。

尝试以下操作:

选择c.Element(“Map”).First()

或者,如果您不确定结果会如何:

选择c.Element(“Map”).FirstOrDefault()


然后检查null以查看是否有结果。

您正在查找First或FirstOrDefault扩展方法

这些方法将返回查询中的第一个元素。只有当查询结果为空时,它们的行为才会有所不同。第一个方法将引发异常,而FirstOrDefault将返回查询中元素类型的默认值(通常为null)


您正在寻找First或FirstOrDefault扩展方法

这些方法将返回查询中的第一个元素。只有当查询结果为空时,它们的行为才会有所不同。第一个方法将引发异常,而FirstOrDefault将返回查询中元素类型的默认值(通常为null)

IEnumerable<XElement> query = from c in libMapFile.Descendants("File")
                                        where (string)c.Element("Name") == dllName
                                select c.Element("Map");
XElement element = query.First();
return element.Value;
var first = query.First();