我是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