我有一堂课,有一些领域。
public abstract class RegisteredUser : Transformable //implements interface
{
protected int id;
protected bool active;
protected string name;
protected string lastName;
protected string email;
protected string username;
protected string password;
protected int institution;
//OTHER STUFF FROM THIS CLASS GO HERE..`
}
Assistant : RegisteredUser
{
}
一旦我从.txt文件加载了所有数据,我将拥有一个像这样的静态字典:
public static Dictionary<int, Transformable> assistants = null; //this will be filed with objects and their id's
现在,我的任务是为该控制台应用程序实现search的功能。由于所有子类都将具有抽象类中的字段,因此该应用程序的用户应可以选择通过其任何字段对任何对象Assistant
,Professor
或Administrator
进行search。
我想通过使用LINQ/lambdas
实现这一目标。我的想法是根据正在搜索的任何字段创建一个通用方法,该方法将接受selector(或某些lambda表达式)。
我对LINQ和C#以及对编程来说是完全陌生的,所以我希望这里不要胡说八道。
public static List<RegisteredUser> search(Dictionary<int, Transformable> map, Func<bool,RegisteredUser> selector, Transformable userType) { if (userType is Assistant) { List<RegisteredUser> list = map.Select(item => (Assistant) item.Value) .ToList() .Select(selector) .ToList(); } //other if/else statements return list; }
当然,Visual Studio中的行是红色的:)基本上,我希望能够发送类似
user => user.Name.Contains("some string which will be entered by the end user")
转换为通用功能。
我有一堂课,有一些领域。公共抽象类RegisteredUser:可转换//实现接口{protected int id;受保护的布尔活性剂;受保护的字符串名称; ...
您实际上并不需要编写单独的函数来完成您想实现的目标,都可以直接通过Linq
完成: