C# 是否可以使用LinQ评估可选标记的存在?

C# 是否可以使用LinQ评估可选标记的存在?,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我会把这两种方法合并成一种。。。为此,我需要检查“Code”标记是否存在。我该怎么做 public string GetIndexValue(string name) { return metadataFile.Descendants("Index") .First(e => e.Attribute("Name").Value == name) .Value; } public IEnumer

我会把这两种方法合并成一种。。。为此,我需要检查“Code”标记是否存在。我该怎么做

    public string GetIndexValue(string name)
    {
        return metadataFile.Descendants("Index")
            .First(e => e.Attribute("Name").Value == name)
            .Value;
    }

    public IEnumerable<string> GetIndexCodes(string name)
    {
        return metadataFile.Descendants("Index")
            .Where(e => e.Attribute("Name").Value == name)
            .Descendants("Code")
            .Select(e => e.Value);
    }
公共字符串GetIndexValue(字符串名称)
{
返回metadataFile.substands(“索引”)
.First(e=>e.Attribute(“Name”).Value==Name)
价值
}
公共IEnumerable GetIndexCodes(字符串名称)
{
返回metadataFile.substands(“索引”)
.Where(e=>e.Attribute(“Name”).Value==Name)
.后代(“代码”)
.选择(e=>e.Value);
}
是否可以评估“代码”标记的存在?我正在考虑这个解决方案:

    public IEnumerable<string> GetIndexValue(string name)
    {
        if (metadataFile.Descendants("Index") CONTAINS TAG CODE)
        {
            return metadataFile.Descendants("Index")
                .Where(e => e.Attribute("Name").Value == name)
                .Descendants("Code")
                .Select(e => e.Value);
        }
        else
        {
            return metadataFile.Descendants("Index")
                .Where(e => e.Attribute("Name").Value == name)
                .Select(e => e.Value);
        }
    }
public IEnumerable GetIndexValue(字符串名称)
{
if(metadataFile.subjects(“索引”)包含标记代码)
{
返回metadataFile.substands(“索引”)
.Where(e=>e.Attribute(“Name”).Value==Name)
.后代(“代码”)
.选择(e=>e.Value);
}
其他的
{
返回metadataFile.substands(“索引”)
.Where(e=>e.Attribute(“Name”).Value==Name)
.选择(e=>e.Value);
}
}

您喜欢这项工作吗

public IEnumerable<string> GetIndexValue(string name)
{
    var indices = metadataFile.Descendants("Index")
            .Where(e => e.Attribute("Name").Value == name);

    var codes = indices.Descendants("Code");

    return (codes.Any()) ? codes.Select(e => e.Value) 
                         : indices.Select(e => e.Value);
}   
public IEnumerable GetIndexValue(字符串名称)
{
var Index=metadataFile.subjects(“索引”)
其中(e=>e.Attribute(“Name”).Value==Name);
var代码=指数。后代(“代码”);
return(code.Any())?code.Select(e=>e.Value)
:index.Select(e=>e.Value);
}