Невозможно применить индексирование с помощью [] к типу выражения «объект» для массива объектов, возвращенного из NHibernate - PullRequest
2 голосов
/ 01 декабря 2011

У меня есть запрос NHibernate, вызванный в моем коде C #, который возвращает массив объектов, который, кажется, работает нормально, за исключением случаев, когда я пытаюсь перебрать элементы в массиве, чтобы использовать значения.Когда я пробую их через foreach, я получаю исключение:

Cannot apply indexing with [] to an expression of type 'object'.

Вот упрощенная версия кода:

        var counts =
            GetSession().CreateQuery(
                @"select Name, count(Id) from
                                    Account
                                    group by Name")
                .Enumerable();

        foreach (var count in counts)
        {
            string s = count[0];
        }

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

1 Ответ

5 голосов
/ 01 декабря 2011

Предположительно, метод Enumerable просто возвращает IEnumerable или IEnumerable<object>.В любом случае, неявная типизация count дает вам object, чего вы, вероятно, не хотите.Я подозреваю, что вы хотите что-то вроде:

// Giving count an explicit type tells the compiler to insert a cast.
// Obviously this will fail if it's *not* an array of some reference type.
foreach (object[] count in counts)
{
    string s = (string) count[0];
}
...