【发布时间】:2020-10-01 07:24:40
【问题描述】:
以下 C# 代码运行 DAX 语句并检索 DataTable。这很好用,但现在我需要从数据库中检索最多 N 行。有没有办法限制Fill 函数返回的行数?如果没有,我怎样才能检索前 N 行?请注意,我需要为任何 DAX 语句保留此通用性,因此您不应更改 DAX 本身。另外,我不想检索所有数据然后取前 N 行,因为数据可能太大。
public static DataTable runDaxStatement(int maxRows) {
var con = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
AdomdConnection conn = new AdomdConnection(con);
DataSet ds = new DataSet();
ds.EnforceConstraints = false;
AdomdCommand cmd = new AdomdCommand("evaluate customers", conn);
AdomdDataAdapter da = new AdomdDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
【问题讨论】:
-
遍历表以获得所需的计数,将数据传递到新表。
-
我想过,但这意味着我必须从数据库中检索所有行,我想限制这个数字,因为数据可能非常大。
-
da.Fill(ds,<startRecord>,<maxRecords>,<srcTableName>)- 你有这种重载的方法吗? (在 ADO.NET 中 - 可用) -
@user2932057 这有效:da.Fill(0, maxRows, dt);其中 dt 是要返回的 DataTable