我正在使用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,但不知道如何实现这个......?
答案 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);