我有一个类似如下的模型:
public class Employee
{
public Employee()
{
TimeCards = new List<TimeCard>();
}
public int Id { get; set; }
public string Name { get; set; }
public DateTime HireDate { get; set; }
public virtual ICollection<TimeCard> TimeCards { get; set; }
}
public class Manager : Employee
{
public bool HasCompanyCar { get; set; }
}
public class Developer : Employee
{
public string MainProgrammingLanguage { get; set; }
}(如果this infrastructure很重要,我会使用它)。
我需要的是让所有不是经理的员工。只有一种OfType扩展方法。我需要的是NotOfType。
var employees = unitOfWork.Employees
.FindAll()
.NotOfType<Manager>(); //or something similar
var cards = unitOfWork.TimeCards.FindAll();
var query = from e in employees
from tc in cards
where tc.Employee.Id == e.Id && e.Name.StartsWith("C")
select tc;离题:对于这种情况,继承是正确的选择吗?如何对其进行建模?我只是觉得继承把我引向了错误的道路。
发布于 2011-01-29 10:09:22
也许您会发现NotOfType扩展方法应该更好,但这对您来说应该是有效的。
var employees = unitOfWork.Employees
.Where(e => !(e is Manager));
var cards = unitOfWork.TimeCards.FindAll();
var query = from e in employees
from tc in cards
where
tc.Employee.Id == e.Id &&
e.Name.StartsWith("C")
select tc;或者像这样:
var employees = unitOfWork.Employees
.FindAll();
var cards = unitOfWork.TimeCards.FindAll();
var query = from e in employees
from tc in cards
where
tc.Employee.Id == e.Id &&
!(e is Manager) &&
e.Name.StartsWith("C")
select tc;https://stackoverflow.com/questions/4773049
复制相似问题