如何将此代码转换为 LINQ

本文关键字:转换 LINQ 代码 | 更新日期: 2023-09-27 18:19:02

我是 LINQ 的新手。我有这样的方法:

public bool IsNullOrEmptyDataTable(DataSet objDataset, int tableNo)
{
    if (objDataset != null)
    {
        if (objDataset.Tables.Count > 0)
        {
            if (objDataset.Tables[tableNo].Rows.Count > 0)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        else
        {
            return true;
        }
    }
    else
    { 
        return true;
    }
}

任何人都可以重写 LINQ 中的业务逻辑以保存代码行吗?

如何将此代码转换为 LINQ

其他答案已经显示了如何在没有 LINQ 的情况下(并且应该,IMO(执行此操作 - 但它们仍然遇到与原始代码相同的问题:您只检查数据集是否有任何表 - 它可能少于 tableNo 个表。我建议:

public bool IsNullOrEmptyDataTable(DataSet objDataset, int tableNo)
{
    return objDataset == null ||
           objDataset.Table.Count <= tableNo ||
           objDataset.Tables[tableNo].Rows.Count == 0;
}

为什么是 linq ?

public bool IsNullOrEmptyDataTable(DataSet objDataset, int tableNo)
{
    return (objDataset != null && objDataset.Table.Count > 0 && objDataset.Tables[tableNo].Rows.Count > 0);
}
  public bool IsNullOrEmptyDataTable(DataSet objDataset, int tableNo)
        {
            return objDataset == null || (objDataset.Tables.Count <= 0 || objDataset.Tables[tableNo].Rows.Count <= 0);
        }
无需

为此使用 LINQ

为此使用 LINQ 绝对没有用;LINQ 用于处理集合中包含的数据,而不是检查管理所述集合的对象的属性。

话虽如此,您可以通过将所有条件组合到一个布尔表达式中来大大简化此代码。

return objDataset == null ||
       objDataset.Tables.Count == 0 ||
       objDataset.Tables[tableNo].Rows.Count == 0;