我有一个数据库列,我只需要检查一下是否存在值。
DataTable dt = masterDataSet.Tables["Settings"];
DataColumn SETTINGS = dt.Columns["DEFAULTSETTINGS"];
我只需要迭代此列中的值以查看是否存在值。 帮助
答案 0 :(得分:4)
您迭代行而不是列
DataColumn SETTINGS = dt.Columns["DEFAULTSETTINGS"];
foreach(DataRow row in dt.Select())
{
object columnValue = row[SETTINGS];
// Do something with columnValue
}
答案 1 :(得分:3)
没有必要使用Linq或手动迭代DataRows,因为普通的ADO.NET有一些解决方案,例如DataTable.Select和DataView.RowFilter。
string value = "default";
bool found = dt.Select("DEFAULTSETTINGS = " + value).Length > 0;
很明显,一旦获得过滤后的行,您就可以随心所欲地执行任何操作。在我的示例中,我只是检查是否有任何行符合条件,但您可以按照您认为合适的方式操作它们。
答案 2 :(得分:1)
您可以在.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扩展方法只是将该列的datarow中的对象转换为给定类型,因此您可以更改type参数而不是使用ToString()。所以对于你的例子,你可以使用它:
DataColumn col = dt.Columns["DEFAULTSETTINGS"];
bool valueExists = dt.AsEnumerable().Any(row => "default".Equals(row.Field<string>(col), StringComparison.OrdinalIgnoreCase);