Linq-to-SQL ToList()有/无记录?

时间:2014-06-24 17:36:42

标签: c# sql linq linq-to-sql

试图在SO上查找这个问题,但无法找到它。

从静态方法返回记录列表的最佳方法是什么?

我想从静态方法返回空列表或填充列表。

考虑以下方法:

    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是否更好?

1 个答案:

答案 0 :(得分:2)

  

我希望能够返回填充列表或空列表 -   如果有0条记录,我不想抛出错误。

您不必检查CountToList不会返回null,它可能会返回一个空列表,您尝试对此进行检查。只需data.ToList();即可。它将返回带有记录或空列表的列表,但不是null。

你可以这样做:

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>?