C# 有没有简单的方法返回第一个LinqToXML结果?
嗯 我有一个LinqToXml查询,它返回一条记录(正确的术语?) 但是,我不想用一个。。循环以从查询中提取该记录。有没有更简单的方法 *如果您能找到更好的方式编写查询,将获得额外奖励(我还在学习) 我的xml文件: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
<?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();