我的代码:
public async Task<DataRow> GetForm(int id)
{
DataRow row = await ExecuteOneRowQueryAsync(id);
DataTable dt = await SelectAsync();
row.Table.Columns.Add("Col", typeof (DataTable));
row["Col"] = dt; //throws
return row;
}
如果我想将数据表值分配给单元格Coll
,则会抛出错误。它说
dt 的类型是 System.Threading.Tasks.Task`1 [System.Data.DataTable] ,但 DataTable 类型是预期的。
我想异步代码部分出了问题。有没有办法让它运行?
修改
从web api控制器调用该方法
public class Controller: ApiController
{
public Task<DataRow> Get(int id)
{
return _service.GetForm(id);
}
}
答案 0 :(得分:1)
我怀疑您在实际代码中有Task<DataTable>
或var
,以下代码可以使用:
DataTable dt = await SelectAsync();
row.Table.Columns.Add("Col", typeof (DataTable));
row["Col"] = dt; // no error will be thrown
并选择异步签名就像:
public async Task<DataTable> SelectAsync()
{
......
......
}
如果您的代码如下所示,您发布的错误就会出现:
Task<DataTable> dt = SelectAsync();
row.Table.Columns.Add("Col", typeof (DataTable));
row["Col"] = dt; // now that error will come