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