我們使用ADO.NET Entity Framework 等ORM(Object Relation Model)的方式自資料庫中存取資料時,常會遇到若存取結果是有資料時,我們要進行一些A處理,而沒有任何資料時,我們則進行B處理,我們可以,但最好不要使用直接使用ICollection介面中的count()方法來進行是否有回傳任何資料項目的判斷,因為有可能自資料庫中存取資料回傳的不是符合ICollection或者是List等序列型態的資料集合,另外也有可能是傳回Null,所以,我們可以使用ICollection介面中的Any()這個方法來判斷有回傳任何項目。
如下範例,若自資料庫查詢到有一些論壇(Forum)資料存在,則此時Any() = true,則我們可進行A處理(如近一步過濾查詢出來的資料或記錄存取資料等等);若查詢出沒有包含任何資料時,我們可進行B處理(如下範例讓forumAreas=null並回傳出去)。
TOYEntities _contx = new TOYEntities();
public List<ForumArea> SelectAll()
{
var forumAreas = (from m in _contx.ForumAreas
select m).ToList();
if (forumAreas.Any())
{
//do A process
}
else
{
//do B process
forumAreas = null;
}
return forumAreas;
}
public List<ForumArea> SelectAll()
{
var forumAreas = (from m in _contx.ForumAreas
select m).ToList();
if (forumAreas.Any())
{
//do A process
}
else
{
//do B process
forumAreas = null;
}
return forumAreas;
}
我們就用Any()去判斷資料項目的有無,可以避免與掌控很多網站程式動態執行時的例外狀況,增加程式的穩定性。
沒有留言:
張貼留言