WebMatrix 3 - 带有DB2的WebGrid和ADO.NET数据集

时间:2013-11-20 02:15:00

标签: db2 webmatrix webgrid

我正在使用WebMatrix查询DB2服务器。我认为快速,概念证明相关任务会更容易......但至少可以说,使用DB2而不是内置提供程序一直是个挑战。

我知道我的结果会回来,因为我可以通过我的数据集迭代并查看我的结果。

我正在尝试使用WebMatrix中的内置WebGrid()函数来显示我的结果并不断收到错误:

  

CS1502:最佳重载方法匹配   “System.Web.Helpers.WebGrid.WebGrid(System.Collections.Generic.IEnumerable,   System.Collections.Generic.IEnumerable,string,int,bool,   bool,string,string,string,string,string,string,string)'has   一些无效的论点

我的代码基本上是:

OleDbConnection conn = new OleDbConnection(connString);
DataTable td = new DataTable;
OleDbDataAdapter da = new OleDbDataAdapter("SELECT USER, GROUP FROM DBO.TEST", connString);
ds = new DataSet();
da.Fill(ds);

var results = new WebGrid(ds.Tables[0].Rows);

当然,它失败了:

var results = new WebGrid(ds.Tables[0].Rows);

任何帮助或指示都将不胜感激。我假设我需要将它转换为System.Collections.Generic.IEnumerable,但不知道如何实现这个......?

1 个答案:

答案 0 :(得分:0)

您无法将DataTable传递给WebGrid。 WebGrid需要一个具有公共属性的Enumerable,它可以用作列名。您可以做的是使用Linq To DataSet将DataTable的内容投影为更合适的形式。 WebGrid将接受anonymous type

OleDbConnection conn = new OleDbConnection(connString);
DataTable td = new DataTable;
string query = @"SELECT USER, GROUP FROM DBO.TEST";
OleDbDataAdapter da = new OleDbDataAdapter(query, connString);
da.Fill(dt);
var data = dt.AsEnumerable().Select(r => new { 
        User = r.Field<string>("USER"),
        Group = r.Field<string>("GROUP")
    });

WebGrid results = new WebGrid(data);