【发布时间】:2012-01-04 22:56:22
【问题描述】:
背景信息: 我在 WCF 服务中有以下代码。 GetDataTable 根据传递了 query 参数的 SQL 数据库调用返回 System.Data.DataTable。
public IEnumerable<Dictionary<string, object>> GetData(string *query*) {
var table = GetDataTable(query);
var columns = table.Columns.Cast<DataColumn>();
var dict = table.AsEnumerable()
.Select(r => columns.Select(c => new {
Column = c.ColumnName,
Value = r[c]
})
.ToDictionary(i => i.Column, i => i.Value != DBNull.Value ? i.Value : null));
return dict;
}
我有一个 Silverlight 应用程序,它调用 GetData,传递一个字符串,然后我收到结果。但是,我在 GridView 中的字段是“比较器”、“计数”、“键”和“值”。
Silverlight 代码 sn-p
WCFCLIENT oData = new WCFCLIENT ();
oData.GetData+= new EventHandler<GetDataCompletedEventArgs>(oData_GetData);
oData.GetData(*sqlquery*);
}
}
void oData_GetDataCompleted(object sender, GetDataCompletedEventArgs e) {
if (e.Error == null) {
rdpPaging.Source = e.Result;
rgvDataResults.ItemsSource = rdpPaging.Source;
}
我的问题有两个
- 我用来创建字典的代码是否有错误?
- 如果代码正确,如何正确设置 DataGrid 的数据源,使其显示 SQL 调用返回的列和行?
我尝试绑定到 e.Result 变量的不同属性,但结果相似。
【问题讨论】:
-
this 怎么样?
-
@M.Babcock - 项目中的代码似乎很多。它可能有效,但看起来很复杂。
标签: c# silverlight wcf service