您的 UI 通常会创建一个包装底层用户信息的视图模型。然后,您将拥有这些视图模型的集合,视图绑定到这些视图模型。假设你有这个,向这个集合添加一个哨兵实例是一件简单的事情。它可能看起来像这样:
// this is your DAL class
public class User
{
}
// a view model to wrap the DAL class
public class UserViewModel
{
// a special instance of the view model to represent all users
public static readonly UserViewModel AllUsers = new UserViewModel(null);
private readonly User user;
public UserViewModel(User user)
{
...
}
// view binds to this to display user
public string Name
{
get { return this.user == null ? "<<All>>" : this.user.Name; }
}
}
public class MainViewModel()
{
private readonly ICollection<UserViewModel> users;
public MainViewModel()
{
this.users = ...;
this.users.Add(UserViewModel.AllUsers);
}
public ICollection<UserViewModel> Users
{
...
}
}
在构建查询的代码中,您需要做的就是检查用户视图模型中的用户是否存在。如果不是,则无需将任何用户选择附加到查询中。