我有一个数据库列,我只需要检查是否存在一个值。
DataTable dt = masterDataSet.Tables["Settings"];
DataColumn SETTINGS = dt.Columns["DEFAULTSETTINGS"];
我只需要遍历这一列的值,看看是否存在一个值。 求助
我有一个数据库列,我只需要检查是否存在一个值。
DataTable dt = masterDataSet.Tables["Settings"];
DataColumn SETTINGS = dt.Columns["DEFAULTSETTINGS"];
我只需要遍历这一列的值,看看是否存在一个值。 求助
DataColumn SETTINGS = dt.Columns["DEFAULTSETTINGS"];
foreach(DataRow row in dt.Select())
{
object columnValue = row[SETTINGS];
// Do something with columnValue
}
不需要使用Linq或手动迭代DataRows,因为普通的ADO.NET有一些解决方案,如DataTable.Select和DataView.RowFilter。
string value = "default";
bool found = dt.Select("DEFAULTSETTINGS = " + value).Length > 0;
你可以在 .net 3.5 中使用 linq:
DataColumn col = dt.Columns["DEFAULTSETTINGS"];
object value = //expected value
bool valueExists = dt.AsEnumerable().Any(row => row.Field<object>(col).Equals(value));
编辑:从评论中看来,您试图查看“DEFAULTSETTINGS”列是否包含字符串“default”。Field 扩展方法只是将该列中的对象强制转换为给定类型,因此您可以更改类型参数而不是使用 ToString()。因此,针对您的示例,您可能可以使用以下代码:
DataColumn col = dt.Columns["DEFAULTSETTINGS"];
bool valueExists = dt.AsEnumerable().Any(row => "default".Equals(row.Field<string>(col), StringComparison.OrdinalIgnoreCase);
.AsEnumerable().Contains(value)
。 - Pavel Minaev