我想有以下API的方法:接受謂詞的C#方法 - 這看起來好嗎?
//get all users with a role of admin
var users = myRepository.GetUsers(u => u.Role == Role.Admin);
請問像這樣的工作?
IList<User> GetUsers(Func<User, bool> predicate)
{
var users = GetAllUsers();
return users.Where(predicate).ToList();
}
如果是這樣,我西港島線能夠指定更復雜的謂語,如(僞):
myRepository.GetUsers(u => u.CreatedDate is upto 14 days old);
爲什麼你不想返回一個IEnumerable的用戶? – 2010-02-05 11:46:31
IEnumerable是否可取,因爲它更靈活? – Ben 2010-02-05 12:05:02
一個IList是一個IEnumerable,所以IEnumerable的靈活性會降低。我認爲這個評論可能是針對可能不需要的ToList()的調用? – 2010-02-05 17:50:25