如何在数据表中搜索具有 Col1="MyValue" 的行
我在想类似的事情
Assert.IsTrue(dataSet.Tables[0].Rows.
FindAll(x => x.Col1 == "MyValue" ).Count == 1);
但这当然行不通!
您可以使用LINQ 到数据集 http://msdn.microsoft.com/en-us/library/bb386977.aspx去做这个:
Assert.IsTrue(dataSet.Tables[0].AsEnumerable().Where(
r => ((string) r["Col1"]) == "MyValue").Count() == 1);
请注意,您也可以在不调用 Assert 的情况下执行此操作:
dataSet.Tables[0].AsEnumerable().Where(
r => ((string) r["Col1"]) == "MyValue").Single();
如果行数不等于 1(因此,调用Single
),那么就会抛出一个异常,并且那个未处理的异常should你的测试用例失败。就我个人而言,我喜欢后者,因为它有更清晰的语义。
上式还可以进一步简化为:
dataSet.Tables[0].AsEnumerable().Single(
r => ((string) r["Col1"]) == "MyValue");
此外,您还可以利用Field method http://msdn.microsoft.com/en-us/library/system.data.datarowextensions.field.aspx on the DataRowExtensions class http://msdn.microsoft.com/en-us/library/bb348900.aspx简化对字段的类型安全访问(以及提供转换的额外好处DBNull http://msdn.microsoft.com/en-us/library/system.dbnull.aspx到 .NET 中的 null 对应项):
dataSet.Tables[0].AsEnumerable().Single(
r => r.Field<string>("Col1") == "MyValue");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)