LINQ to DataSet - 连接和GridView问题
我有三个DataTable需要连接在一起,并使用连接数据作为GridView的DataSource。第一个(
localSQLTable
)通过对MS-SQL数据库的查询填充。第二个(serviceResponse.Tables(0)
和serviceResponse.Tables(1)
)是使用Web服务的结果使用DataSet.ReadXML
构建的。
我到目前为止:
Dim joinedData = From f In localSQLTable _
Join s1 As DataRow In serviceResponse.Tables(0) _
On f.Item("KNum") Equals s1.Item("Number") _
Join s2 As DataRow In serviceResponse.Tables(1) _
On s1.Item("KNumber_Id") Equals s2.Item("KNumber_Id") _
Select Guid = f.Item("Guid"), Num = f.Item("Num"), Desc = f.Item("Desc"), KNum = f.Item("KNum"), KDesc = s2.Item("KDescription_Text"), Type = s2.Item("Type") _
Where (Type.ToString.ToUpper = "LONG_HTML")
myGridView.DataSource = joinedData
myGridView.DataBind()
然而,似乎joinedData
只是一个IEnumerable(匿名类型)。我尝试了一些东西,包括以下内容:
尝试使用lambda函数(我完全不熟悉)将joinedData
构建为IEnumerable(Of DataRow)来构建新的DataRow
在结果集上调用.ToList()
或.AsEnumerable()
(在使用类型之后)
主要的问题是,无论我似乎尝试什么,使用结果作为我的GridView的DataSource有问题 - 我有两个例外之一:
具有id的GridView的数据源没有用于生成列的任何属性或属性。确保您的数据源包含内容。
数据源不支持服务器端数据分页。
我也知道我可能不应该在我的Linq查询中使用.Item ("Field")
而不是强类型.Field (Of T)("Field")
- 我等待这个改变,直到我得到数据实际可用。
我没跟Linq结婚;如果DataSet.Merge
更合适(或其他一些方法),我会接受它。还有一个明显的可能性,我实际上必须加入我以后的另外两个DataTables。如果是这种情况,我可能会将serviceResponse
表合并为一个,所以我仍然只会加入三个表。
那么我该怎样做才能将这些数据连接在一起并将结果用作我的GridView的DataSource?我正在做的任何事情都比在原始的DataTable(localSQLTable
)中添加两个额外的列并使用XML响应数据逐行填充更快!
没有找到相关结果
已邀请:
2 个回复
膛嵌墒缅欠
而不是 示例(C#)
示例(vb)
或者在GridView上禁用
编辑: 以下查询工作正常
氏脑
我明确定义了我需要的结束DataTable的DataTable和模式(通过添加DataColumns),然后将我的连接中的DataTable和两个DataRows传递给
,定义为:
我的joinedData对象现在是一个IEnumerable的DataRows,我可以将它复制到我的GridView数据源的DataTable中,它将自动生成列并允许分页。