我遇到了在Visual Studio中对同一数据集调用类似LINQ查询的问题。有人能告诉我发生了什么以及如何解决这个问题吗?
这就是我正在尝试做的事情,这是炸弹:
Dim raw = db.GetRawData()
GridView2.DataSource = (From p In raw Select p.Nme, p.val).Where(Function(w) w.Grade = "A")
GridView3.DataSource = (From p In raw Select p.Nme, p.val).Where(Function(w) w.Grade = "B")
GridView2.DataBind()
GridView3.DataBind()
但这有效:
GridView2.DataSource = (From p In raw Select p.Nme, p.val).Where(Function(w) w.Grade = "A")
GridView3.DataSource = otherdata
这样做:
GridView2.DataSource = otherdata
GridView3.DataSource = (From p In raw Select p.Nme, p.val).Where(Function(w) w.Grade = "B")
这甚至不起作用:
GridView2.DataSource = (From p In raw Select p.Nme, p.val).Where(Function(w) w.Grade = "A")
GridView3.DataSource = (From p In raw Select p.Nme, p.val).Where(Function(w) w.Grade = "A")
因此,我多次调用类似查询的事实似乎是一个问题。
答案 0 :(得分:0)
使用ToList()强制立即执行可以解决问题:
Dim raw = db.GetRawData().ToList()
GridView2.DataSource = (From p In raw Select p.Nme, p.val).Where(Function(w) w.Grade = "A")
GridView3.DataSource = (From p In raw Select p.Nme, p.val).Where(Function(w) w.Grade = "B")
GridView2.DataBind()
GridView3.DataBind()