新增文章
文章标题
分类
C#
云星空
K3 BOS
K3 功能
用友
Oracle
python
SQL
MySql
PHP
HTML
script
windows
Access
影视后期
财务
服务
生活
内容
在C#中,若需为`DataTable`添加多个过滤条件,可通过`&&`(与)或`||`(或)逻辑运算符组合条件。以下是几种常见写法示例: ### 示例1:多条件“与”关系(同时满足) ```csharp var aTable2 = aTable1.AsEnumerable() .Where(row => row["F_RVFJ_CLBM"] != null && // 材料编码不为空 row["F_STATUS"].ToString() == "Active" && // 状态为"Active" Convert.ToInt32(row["F_QUANTITY"]) > 10 // 数量大于10 ) .ToList(); ``` ### 示例2:多条件“或”关系(满足其一) ```csharp var aTable2 = aTable1.AsEnumerable() .Where(row => row["F_RVFJ_CLBM"] == null || // 材料编码为空 或 row["F_STATUS"].ToString() == "Expired" // 状态为"Expired" ) .ToList(); ``` ### 示例3:混合使用“与”和“或” ```csharp var aTable2 = aTable1.AsEnumerable() .Where(row => (row["F_RVFJ_CLBM"] != null && row["F_TYPE"].ToString() == "A") || (Convert.ToDecimal(row["F_PRICE"]) < 100m) ) .ToList(); ``` ### 注意事项: 1. **类型安全**:推荐使用`Field<T>()`方法避免显式转换: ```csharp .Where(row => row.Field<string>("F_RVFJ_CLBM") != null && row.Field<string>("F_STATUS") == "Active" && row.Field<int>("F_QUANTITY") > 10 ) ``` 2. **处理DBNull**:若数据可能含`DBNull`,使用`IsNull`检查: ```csharp !row.IsNull("F_RVFJ_CLBM") ``` 3. **性能优化**:频繁查询可先转换为`Enumerable`: ```csharp aTable1.AsEnumerable().Where(...) ``` 根据实际需求调整条件组合方式即可。
返回
保存