2015-05-15 3 views
0

Я хочу вернуть только значение ViewBag с запросом LINQ нижеКак отправить значение из оператора выбора контроллера MVC для Viewbag

var myCompanyName = (from c in db.Companies 
        where c.CompanyId == CompanyID 
        select c.CompanyName).ToString(); 
ViewBag.myCompanyName = myCompanyName; 

В моей MVC контроллер, но я получаю следующий результат в моей Посмотреть.

SELECT [Extent1].[CompanyName] AS [CompanyName] FROM [dbo].[Companies] AS [Extent1] WHERE [Extent1].[CompanyId] = @p__linq__0 Company Name from Controller Action 

Результат ViewBag, ожидаемый от мешка зрения, должен выглядеть примерно так: CompanyName XYZ. Как я могу это сделать правильно?

+3

Извлеките '.ToString();' из вашего запроса. Обратите внимание, что ваш запрос возвращает коллекцию строк - я предполагаю, что вам может понадобиться '.FirstOrDefault()'? –

+0

@StephenMuecke Я удалил ToString() из запроса, но у меня все еще есть 'SELECT [Extent1]. [CompanyName] AS [CompanyName] FROM [dbo]. [Компании] AS [Extent1] WHERE [Extent1]. [CompanyId] = @ p__linq__0' в качестве результата. – Guzzyman

+0

'ViewBag.myCompanyName = db.Companies.FirstOrDefault (c => c.CompanyId == CompanyID);' – ramiramilu

ответ

3

Ваш не материализуется ваш запрос, и я подозреваю, что вы хотите вернуть одно значение (не IEnumerable<string>), поэтому вам нужно заменить .ToString() с .FirstOrDefault()

var myCompanyName = (from c in db.Companies 
        where c.CompanyId == CompanyID 
        select c.CompanyName).FirstOrDefault(); 
ViewBag.myCompanyName = myCompanyName; 

или если вы сделали хотите коллекцию string, затем это будет .ToList()

+0

Привет. Мои друзья рекомендовали вас мне в Asp.Net MVC. У меня есть один вопрос в SO (http://stackoverflow.com/questions/30273517/best-practice-for-persisting-user-state-in-special-kind-of-asp-net-mvc-applicati). Не могли бы вы помочь мне, так как это очень срочно. И я действительно буду полезен для вашей помощи. –

Смежные вопросы