У меня стандартная последовательность {"основание", "стержень", "щиток", "ободок"}

У меня есть процесс, который возвращает список вроде {"стержень", "основание"}, {"стержень", "задняя панель", "основание", "обод"} ....

Мне нужно определить, работает ли последовательность неправильно, сравнив значения возвращенного списка со стандартным.

Примеры:

{"base"} - должен вернуть истину

{"base", "stem"} - должно возвращать истину

{"base", "backboard"} - должно возвращать false

{"стержень", "основа"} - должен возвращать истину

{"backboard", "base", "stem"} - должно возвращать true

Порядок не имеет значения

Я пробовал вставить несколько операторов if, но мне ничего не показалось правильным.

Вот мой код:

if (tagList.Contains("base"))
{
    // do nothing
    if (tagList.Contains("stem"))
    {
        // do nothing
        if (tagList.Contains("bb"))
        {
            // do nothing
            if (tagList.Contains("rim"))
            {
                //do nothing
            }
        }
        else if (tagList.Contains("BB") && tagList.Contains("rim"))
        {
            // do nothing
        }
        else
        {
            // step -3 bb faulty
        }
    }
    else if (tagList.Contains("stem") && tagList.Contains("BB"))
    {
        //do nothing
    }
    else if (tagList.Contains("stem") && tagList.Contains("BB") && tagList.Contains("rim"))
    {
        //do nothing
    }
    else if (tagList.Contains("stem") && tagList.Contains("rim"))
    {
        // step-3 BB faulty
    }
    else
    {
        // step-2 stem faulty
    }

}
else if (tagList.Contains("base") && tagList.Contains("stem"))
{
    // do nothing

}
else if (tagList.Contains("base") && tagList.Contains("stem") && tagList.Contains("BB"))
{
    // do nothing
}
else if (tagList.Contains("base") && tagList.Contains("stem") && tagList.Contains("BB") && tagList.Contains("rim"))
{
    // do nothing
}
else if (tagList.Contains("base") && (tagList.Contains("BB") || tagList.Contains("rim")))
{
    // step-2 stem faulty
}
else
{
    // step-1 base faulty
}
c#
0
Hemachandra Ghanta 23 Окт 2019 в 23:18

1 ответ

Лучший ответ

Вы (по-видимому) просто хотите знать, содержит ли результат процесса все элементы с одинаковым количеством элементов в стандартном в любом порядке .

Итак, возьмите первые n элементов из standard и посмотрите, содержит ли результат каждый из них:

var okay = standard.Take(result.Count()).All(s => result.Contains(s));

Чтобы узнать, чего не хватает, используйте

var missing = standard.Take(result.Count()).Where(s => !result.Contains(s)).ToList();
3
NetMage 23 Окт 2019 в 21:21