EF很多或默认

时间:2014-02-02 12:45:41

标签: c# entity-framework linq-to-entities

我有返回数据库中所有客户端的函数,它看起来像这样:

MyContext db = new MyContext();
db.Configuration.LazyLoadingEnabled = false;
db.Configuration.ProxyCreationEnabled = false;
var clients = db.clients.???;

我的问题是,如果存在且如果不为null,我该如何返回所有客户端(类似于第一个或默认的类似全部或默认的东西)?

2 个答案:

答案 0 :(得分:2)

在我看来,如果没有客户端,你应该返回一个空IEnumerable而不是null。

但如果你坚持,你可以做以下事情:

var clients = db.clients.AsEnumerable();

return clients.Any() ? clients : null;

如果这是你计划做的很多事情,你可以把它变成这样的扩展方法:

public static class DbExtensions
{
    public static IEnumerable<T> ManyOrNull<T>(this IEnumerable<T> elements)
    {
        return elements.Any() ? elements: null;
    }
}

然后在你的另一种方法中你可以写:

return db.clients.ManyOrNull();

答案 1 :(得分:2)

试一试。

var hasClients = db.clients.Any();
if (hasClients)
{
   //TODO: If exist;
   var list = db.clients.ToList();
}
else
{
   //Default: Null
}