Как проверить, дал ли мой запрос Linq какой-либо результат? - PullRequest
1 голос
/ 04 января 2011

Привет, ребята, я использую Entity Framework, я сталкиваюсь с некоторой проблемой при проверке, дал ли мой linq какие-либо результаты, если он возвращает какой-либо результат, я хочу использовать его в качестве источника данных, вот код, пожалуйста, посмотрите:

    var dbContext = new DBEntities();
    try
    {
        var linQuery = from cq in dbContext.tblCharacteristics
                        where cq.CharacteristicID.Equals(combobox1.SelectedText)
                        select new
                        {
                            CharacteristicIDs = cq.CharID,
                            CharacteristicNames = cq.CharName
                        };

        if (linQuery.Any()) //Also tried with linQuery.Count() != 0
        {
            lbChaKeyValues.DataSource = linQuery;
            lbChaKeyValues.DisplayMember = "CharacteristicNames";
        }
    }
    catch (System.Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    finally
    {
        dbContext.Dispose();
    }

Я получаю следующую ошибку: "DbComparisonExpression требует аргументов с сопоставимыми типами."

1 Ответ

3 голосов
/ 04 января 2011

ЕСЛИ CharacteristicID является целочисленным типом, сравнение не будет работать.Вместо этого попробуйте

   var inputFromUser = Int32.Parse( combobox1.SelectedText );

   var linQuery = from cq in dbContext.tblCharacteristics
                    where cq.CharacteristicID == inputFromUser
                    select new
                    {
                        CharacteristicIDs = cq.CharID,
                        CharacteristicNames = cq.CharName
                    };

Между прочим, .Any() является правильным способом проверки результатов поиска.И если вы не собираетесь использовать возвращаемые результаты, нет необходимости проецировать данные в анонимный тип.Просто используйте select true или select cq, что позволяет оптимизатору использовать лучший индекс в БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...