如何将此代码转换为LINQ

时间:2011-12-27 10:08:10

标签: c# linq

我是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中重写业务逻辑以保存代码行吗?

4 个答案:

答案 0 :(得分:2)

为什么选择linq?

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

答案 1 :(得分:2)

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

没有必要为此使用LINQ

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

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

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

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