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

Filed under:
|
|

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

Related posts about c#

Related posts about refactoring