У меня есть список книг в моем приложении, и я пытаюсь добавить проверку, чтобы в список не добавлялись повторяющиеся книги. Проверка должна проверять, что название книги еще не присутствует в списке, независимо от регистра, т.е. строчные буквы "book1" и прописные "BOOK1" должны рассматриваться как одно и то же.

Пока я написал следующий код:

public string Error
{
    get
    {
        if (Books.Count() != Books.Select(x => new { x.Name.ToUpper(), x.CategoryID }).Distinct().Count())
        {
            return "Every Book and Category should be unique";
        }
        return string.Empty;
    }
}

Но возникает следующая ошибка:

Инициализатор проекции анонимного типа Должен быть простым выражением имени или доступа к члену.

Как мне сделать, чтобы проверить случаи?

1
Hari Gillala 6 Май 2014 в 18:52

2 ответа

Лучший ответ

Проблема в этом сегменте кода:

new { x.Name.ToUpper(),

C # не знает, какое имя свойства дать этому выражению, поэтому вам нужно четко указать, как это должно называться:

new { Name = x.Name.ToUpper(),
7
Servy 6 Май 2014 в 14:57

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

0
Brent Waggoner 6 Май 2014 в 15:20