2014-06-24 78 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>?

相关问题