Можно ли оценить наличие дополнительного тега с помощью LinQ? - PullRequest
0 голосов
/ 15 мая 2011

Я бы объединил эти два метода в один ... для этого мне нужно проверить наличие тега "Код" Как я могу это сделать?

    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);
    }

Можно ли оценить наличие тега "Код"? Я думаю об этом решении:

    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);
        }
    }

1 Ответ

1 голос
/ 15 мая 2011

Хотелось бы что-нибудь подобное?

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);
}   
...