如何将此代码转换为 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 的情况下(并且应该,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;