我是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中的业务逻辑来保存代码行吗?
只需将比较结果直接返回到最里面的if就可以保存7行代码, 'return objDataset.Tables [tableNo] .Rows.Count == 0'。如果你摆脱了所有'else'子句,并且在最外层的'if'外部有一个无条件的'return true',你可以节省更多的行(〜8)。 – bobbymcr 2011-12-27 10:12:31
您正试图通过缩短代码来改进您的代码。代码越短代码越好,并不总是这样。由于代码是一次写入但读取很多次,所以你真正想要的是*清除*代码。切换一个简单的查询到LINQ可能会缩短它,但更难以理解;将一个非常复杂的查询切换到LINQ可能会使它更短,更易于理解。在这种情况下,如答案所示,只需删除不必要的其他分支就可以使测试更加清晰。 – 2011-12-27 10:31:10
看马! [箭头](http://lostechies.com/chrismissal/2009/05/27/anti-patterns-and-worst-practices-the-arrowhead-anti-pattern/)! – nulltoken 2011-12-27 10:45:32