如何将字符串从LINQ查询传递给ViewBag

时间:2015-08-03 20:22:54

标签: asp.net-mvc linq

我正在尝试为我的页面动态生成标题。我使用此查询选择项目类型:

ViewBag.itemType = From row In db.tblCategories
                   Where row.Item_Type_Identifier = itemType
                   Select CStr(row.Item_Type)
                   Distinct

在我看来,我试图像这样展示它:

<h2>Details for @ViewBag.itemType </h2>

我没有看到显示从查询中检索到的值的视图,而是看到LINQ查询实际显示如下:

SELECT [Distinct1].[Item_Type] AS [Item_Type] 
FROM ( SELECT DISTINCT [Extent1].[Item_Type] 
AS [Item_Type] FROM [dbo].[tblCategories] AS [Extent1] 
WHERE [Extent1].[Item_Type_Identifier] = @p__linq__0 ) 
AS [Distinct1]  

我尝试将查询中的值放在变量中,然后将该变量添加到ViewData,然后在视图中检索该值。

我试图在我的LINQ上使用.ToString而不是投射CStr

为什么我的查询被放在我的ViewBag而不是我的LINQ返回的值?

1 个答案:

答案 0 :(得分:3)

这是因为你传递了LINQ查询(在这种情况下是IQueriable)。

尝试这样的事情:

ViewBag.itemType = (From row In db.tblCategories
                   Where row.Item_Type_Identifier = itemType
                   Select CStr(row.Item_Type)
                   Distinct).Single()

(如果在VB.NET中允许此语法)