这是我的工作代码:
DataSet myDataSet = new DataSet();
mySqlDataAdapter.Fill(myDataSet);
DataTable positionData = myDataSet.Tables["Table"];
if (siteData.Rows.Count > 0)
{
positionDV = string.Join<object>(", ",
from r in siteData.Rows.OfType<DataRow>() select r[1]);
}
else
{
positionDV = "";
}
positionDV的内容看起来像“14,47,5,11”等,其中数据库中的每个NULL值都有一个空格。
我想要实现的是,NULL值实际上是以NULL形式写入字符串的。所以上面的例子看起来像“14,47,5,null,11”。
为了简洁起见,positionDV只是一个字符串,实际上每个数据集有几十个,每个数据都接近100,000个。
我正在寻找的是一种插入null而不是空格的方法。在string.Join中创建条件会更有效吗(如果是这样,我该怎么做?),或者按原样创建字符串然后创建一个单独的赋值来更高效这样:
positionDV += positionDV.replace(", ,", ", null,");
答案 0 :(得分:1)
只需使用Enumerable.Select
,DataRow.Field
支持可空类型。然后你可以使用条件运算符(?:)来获取int值作为字符串或“null”如果它是空/ null:
IEnumerable<int?> positionValues = myDataSet.Tables["Table"].AsEnumerable()
.Select(r => r.Field<int?>(1));
IEnumerable<string> positions = positionValues
.Select(v => v.HasValue ? v.Value.ToString() : "null");
string positionDV = string.Join(", ", positions);