Asp.net,Linq错误:'int'是'type'但是像'变量'一样使用

时间:2009-04-10 19:10:21

标签: .net asp.net linq ado.net

我正在使用asp.net和链接来显示数据库中的一组书籍。 它给了我一个错误

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0118: 'int' is a 'type' but is used like a 'variable'

Source Error:

Line 48:         using(MobileBooksDataContext categoryList = new MobileBooksDataContext())
Line 49:         {
Line 50:             int catID = Int32(CategoryName.SelectedItem); 
Line 51:             var newBookList = from b in categoryList.team5_bookmobiles
Line 52:                               where(b.ca_id == catID)


protected void getBookList()
    {

        using(MobileBooksDataContext categoryList = new MobileBooksDataContext())
        {
            int catID = Int32(CategoryName.SelectedItem); 
            var newBookList = from b in categoryList.team5_bookmobiles
                              where(b.ca_id == catID)
                            select new
                            {
                                lblBook_name = b.book_name,
                                lblBook_author = b.book_author,
                                lblBook_shortdesc = b.book_short_desc
                            };

            lv_Books.DataSource = newBookList;
            lv_Books.DataBind();
        }
    }

    protected void btn_Select_Click(object sender, EventArgs e)
    {
        getBookList();
    }

我从下拉列表中获取类别ID,并将其与不同表格中的图书类别ID进行匹配。

5 个答案:

答案 0 :(得分:2)

我认为应该是:

int catID = Int32.Parse(CategoryName.SelectedValue.ToString()); 

答案 1 :(得分:1)

如果您更改了

,该怎么办?
int catID = Int32(CategoryName.SelectedItem); 

int catID = Int32.Parse(CategoryName.SelectedItem); 

答案 2 :(得分:1)

第50行使用Int32构造函数就像一个函数。将Int32(CategoryName.SelectedItem)更改为new Int32(CategoryName.SelectedItem),或使用(Int32)(CategoryName.SelectedItem)转换为int。

答案 3 :(得分:0)

只是为了安全起见:

int catID = Int32.Parse(CategoryName.SelectedItem.ToString());

答案 4 :(得分:0)

如果您正在使用DataBinding,则SelectedItem很可能是数据绑定对象。你可以使用它,但你必须先抛出它。这可能是更好的性能,因为您不必执行字符串解析来获取类别ID。

或者,您可以使用属性DropDownList.SelectedValue,您可以使用数据绑定向导配置它,或者使用控件声明中的属性DataValueField。

无论哪种方式,您都不能使用C ++或VB语法来使用C#执行强制转换为Int32。

如果您使用SelectedValue属性,您将拥有一个字符串并将其转换为Int32,您必须编写如下内容:

var value = Int32.Parse(CategoryName.SelectedValue, CultureInfo.InvariantCulture);