2014-06-24 111 views
0

試圖在SO上尋找這個問題,但找不到它。Linq-to-SQL ToList()是否有記錄?

從靜態方法返回記錄列表的最佳方式是什麼?

我想從我的靜態方法返回一個空列表或填充列表。

考慮下面的方法:

public static List<division> GetAllDivisions(bool isAvailable) 
    { 
     MyDataContext db = new MyDataContext(); 
     List<division> DivisionList = new List<division>(); 

     var data = from d in db.divisions 
        where d.isAvailable == isAvailable 
        select d; 

     if(data.Count() > 0) 
      DivisionList = data.ToList(); 

     return DivisionList; 
    } 

我真的需要做到以下幾點?

if(data.Count() > 0) 
     DivisionList = data.ToList(); 

可我只是做DivisionList = data.ToList()沒有檢查計數?

我希望能夠返回填充列表或空列表 - ,並且我不希望在存在0個記錄時拋出錯誤。

什麼是最佳實踐?返回IEnumerable是否更好?

回答

2

我希望能夠返回填充列表或空列表 - 並且我不想在出現0個記錄時拋出錯誤。

您不必檢查CountToList不會返回null,它可以返回一個空列表,你試圖用你的支票做。只需data.ToList();就夠了。它將返回包含記錄或空列表的列表,但不爲空。

你可以這樣做:

public static List<division> GetAllDivisions(bool isAvailable) 
{ 
    MyDataContext db = new MyDataContext(); 
    return db.divisions 
      .Where(d => d.isAvailable == isAvailable) 
      .ToList(); 
} 

對於

是更好地返回了IEnumerable?

參見:Should I always return IEnumerable<T> instead of IList<T>?

相關問題