c# - EF 很多或默认

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

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

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

我的问题是,如果存在且不为空(类似于 first 或 default 之类的 all 或 default),我如何返回所有客户端?

最佳答案

在我看来,当没有客户端时,您应该返回一个空的 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();

关于c# - EF 很多或默认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510730/

相关文章:

c# - 使用 C# 在图像中查找黑色正方形/矩形

c# - EF 6 中缺少 QueryableExtensions

.net - LINQ 到实体 : Age calculation in a LINQ query causes "Method cannot be translated into a store expression"

LINQ Any 与 Exists 性能对比

c# - 从数据库获取值(value)到 Linq where 子句

c# - ASP MVC 应用程序在长时间运行的线程上重置

C# 如何将矩形移动一定的距离 (+x,+y)

c# - 使用 getter 和 setter 声明私有(private)属性有什么好处吗?

asp.net-mvc - 微软 Entity Framework

c# - XAML 如何实例化对象?