Can someone help me refactor this C# linq business logic for efficiency?
Posted
by Russell
on Stack Overflow
See other posts from Stack Overflow
or by Russell
Published on 2010-03-29T22:39:59Z
Indexed on
2010/03/29
22:43 UTC
Read the original article
Hit count: 394
I feel like this is not a very efficient way of using linq. I was hoping somebody on here would have a suggestion for a refactor. I realize this code is not very pretty, as I was in a complete rush.
public class Workflow
{
public void AssignForms()
{
using (var cntx = new ProjectBusiness.Providers.ProjectDataContext())
{
var emplist = (from e in cntx.vw_EmployeeTaskLists where e.OwnerEmployeeID == null select e).ToList();
foreach (var emp in emplist)
{
// if employee has a form assigned: break;
if (emp.GRADE > 15 || (emp.Pay_Plan.ToLower().Contains("al") || emp.Pay_Plan.ToLower().Contains("ex")))
{
//Assign278();
}
else if ((emp.Series.Contains("0905") || emp.Series.Contains("0511") || emp.Series.Contains("0110") || emp.Series.Contains("1801")) || (emp.GRADE >= 12 && emp.GRADE <= 15))
{
var emptask = new ProjectBusiness.Providers.EmployeeTask();
emptask.TimespanID = cntx.Timespans.SingleOrDefault(t => t.BeginDate.Year == DateTime.Today.Year & t.EndDate.Year == DateTime.Today.Year).TimespanID;
var FormID = (from f in cntx.Forms where f.FormName.Contains("450") select f.FormID).FirstOrDefault();
var TaskStatusID = (from s in cntx.TaskStatus where s.StatusDescription.ToLower() == "not started" select s.TaskStatusID).FirstOrDefault();
Assign450((int)emp.EmployeeID, FormID, TaskStatusID, emptask);
cntx.EmployeeTasks.InsertOnSubmit(emptask);
}
else
{
//Assign185();
}
}
cntx.SubmitChanges();
}
}
private void Assign450(int EmployeeID, int FormID, int TaskStatusID, ProjectBusiness.Providers.EmployeeTask emptask)
{
emptask.FormID = FormID;
emptask.OwnerEmployeeID = EmployeeID;
emptask.AssignedToEmployeeID = EmployeeID;
emptask.TaskStatusID = TaskStatusID;
emptask.DueDate = DateTime.Today;
}
}
© Stack Overflow or respective owner