用 webgrid 中的字符串替换空值
Replacing nulls with strings in a webgrid
我正在使用 webmatrix,我想在我的变量 "grid" 中存储一个 webgrid,但是我希望我的所有空值都在 table 的一列中,我正在创建它被字符串替换:"aString"。
我使用以下代码从我的数据库 table 加载我的网格变量。
@{
var db = Database.Open("databaseName");
var selectedData = db.Query("SELECT * FROM TableName");
var grid = new WebGrid(source: selectedData, rowsPerPage: 500);
}
有什么简单的方法可以做到这一点吗?
有几种解决问题的方法。一种方法是更改 SQL 以便不返回 null。例如,您可以输入:
var selectedData = db.Query("SELECT *, coalesce(OriginalField, 'aString') AS improvedField FROM TableName");
coalesce() 函数用您想要的字符串替换空值。 "AS" 表示结果应别名为名为 "improved field" 的字段。
我在上面放置的代码的一个缺点是,由于其中包含 *,您将同时获得带空值的原始字段和不带空值的改进字段。您可以将 * 替换为您想要的所有字段的列表。
另一种方法是不更改 SQL 而是在您使用它时更改输出。这取决于你用它做什么,所以我不会在这里展示一个例子。
我正在使用 webmatrix,我想在我的变量 "grid" 中存储一个 webgrid,但是我希望我的所有空值都在 table 的一列中,我正在创建它被字符串替换:"aString"。 我使用以下代码从我的数据库 table 加载我的网格变量。
@{
var db = Database.Open("databaseName");
var selectedData = db.Query("SELECT * FROM TableName");
var grid = new WebGrid(source: selectedData, rowsPerPage: 500);
}
有什么简单的方法可以做到这一点吗?
有几种解决问题的方法。一种方法是更改 SQL 以便不返回 null。例如,您可以输入:
var selectedData = db.Query("SELECT *, coalesce(OriginalField, 'aString') AS improvedField FROM TableName");
coalesce() 函数用您想要的字符串替换空值。 "AS" 表示结果应别名为名为 "improved field" 的字段。
我在上面放置的代码的一个缺点是,由于其中包含 *,您将同时获得带空值的原始字段和不带空值的改进字段。您可以将 * 替换为您想要的所有字段的列表。
另一种方法是不更改 SQL 而是在您使用它时更改输出。这取决于你用它做什么,所以我不会在这里展示一个例子。