多个LINQ查询错误

时间:2015-08-04 20:00:16

标签: vb.net linq

我遇到了在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")

因此,我多次调用类似查询的事实似乎是一个问题。

1 个答案:

答案 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()