Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim ds As DataSet
ds = getData()
Dim dt As DataTable = ds.Tables(0)
Dim gridViewData = From r As DataRow In dt.Rows Select r.Item("foo"), r.Item("bar")
GridView1.DataSource = gridViewData
GridView1.DataBind()
End Sub
我刚编写了前面的代码,我得到以下编译时错误:“只能从没有参数的简单或限定名称推断范围变量名”。为什么我会收到此错误?我该如何修复我的代码?
答案 0 :(得分:6)
Dim gridViewData = From r As DataRow In dt.Rows _
Select Foo = r.Item("foo"), Bar = r.Item("bar")
基本上它不知道投影中的属性叫什么。
答案 1 :(得分:2)
不幸的是,我不知道这个的VB语法,所以我只需要展示C#并希望你能解决它:
from DataRow r in dt.Rows
select new
{
r.Item("Foo"),
r.Item("bar")
}
这是说“创建一个具有两个属性的新类”,但它不知道您希望这些属性命名。如果你做过这样的事情:
from DataRow r in dt.Rows
select new
{
r.Count,
r.NumRows
}
然后它会假设您需要名为Count
和NumRows
的属性,但是对于您的属性,它必须继续的是Item
,两者都使用它。
解决这个问题,您必须明确指定名称:
from DataRow r in dt.Rows
select new
{
Foo = r.Item("Foo"),
Bar = r.Item("bar")
}