LINQ: выберите данные из одного столбца в IQueryable <> - PullRequest
1 голос
/ 31 марта 2009

У меня есть таблица, из которой мне нужно извлечь данные, и я хочу отбросить один из двух столбцов, из которых получены данные. В моей БД у меня есть «ObjectID (PK)» и «ObjectName».

Я хочу использовать эти данные для заполнения SelectList в проекте ASP.NET MVC, и поэтому в моем коде есть объект IQueryable, который выглядит следующим образом:

public IQueryable<objectRef> FindSomeObject()
{
    return from myObj in db.TableName
        orderby myObj.colName
        select myObj;
}

Если я попытаюсь изменить последнюю строку, чтобы получить данные только одного столбца, например:

select new { myObject.colName };

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

Раздражает то, что этот запрос используется в ViewData[""] для установки SelectList, который отображает выпадающий штраф, но записывает значение PK в новую таблицу вместо текста.

Я предполагаю, что я так мало знаю об этом, что даже не могу задать Google правильный вопрос, так как часы RTFM не выявили ничего полезного. Любая помощь будет оценена.

Ответы [ 3 ]

8 голосов
/ 31 марта 2009

Вам нужно изменить тип возврата вашего метода - если вы хотите выбрать только один столбец, просто объявите, что вы собираетесь вернуть что-то из этого столбца. Например:

public IQueryable<string> FindSomeObject()
{
    return from myObj in db.TableName
        orderby myObj.colName
        select myObj.colName;
}

По сути, это говорит о том, что это запрос, который возвращает последовательность строк - я полагаю, это то, что вы хотите.

3 голосов
/ 31 марта 2009

Используйте тип colName, например:

public IQueryable<string> FindSomeObject()
{
    return from myObj in db.TableName
        orderby myObj.colName
        select myObj.colName;
}
1 голос
/ 31 марта 2009

Вы пробовали:

public IQueryable<objectRef> FindSomeObject()  
{
    return from myObj in db.TableName
        orderby myObj.colName
        select myObj.colName;
}

И, кстати, у вас есть класс с именем objectRef, начинающийся со строчной буквы? В начале должна быть прописная буква (и она должна быть любого типа colName).

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