使用C#如何判断DataTable指定列是否存在特定值,可否用LINQ实现?
LINQ实现DataTable指定列值存在性判断
你当前的写法存在两处问题:
- 仅校验了表格第一行的
SourceFile列值,没有遍历所有行,不符合「任意一行存在即满足条件」的需求 - 需求中指定的列名是
FileName,示例代码写的是SourceFile,注意实际使用时保持列名一致
实现步骤
首先需要引入对应命名空间:
using System.Data; using System.Linq;
基础校验逻辑
直接使用LINQ的Any()方法即可完成需求,代码非常简洁:
if (table.AsEnumerable().Any(row => row.Field<string>("FileName") == "Testfile.txt")) { // 存在匹配记录,执行对应逻辑 }
兼容空值的校验逻辑
如果FileName列可能存在DBNull空值,可以加一层空值判断避免抛出转换异常:
if (table.AsEnumerable().Any(row => !row.IsNull("FileName") && row.Field<string>("FileName") == "Testfile.txt")) { // 存在匹配记录,执行对应逻辑 }
逻辑说明
AsEnumerable()可以将DataTable的行集合转换为LINQ支持操作的IEnumerable<DataRow>类型Any()方法只要匹配到第一条符合条件的记录就会终止遍历,即使是大数据量的表也能保证较高的执行效率,针对你10行的小表性能完全没有影响
内容的提问来源于stack exchange,提问作者user16252006
相关产品推荐
相关产品推荐

