The simplest solution would be to have 2 returns statements.
If you prefer a cleaner approch, then create a private function for each case.
public JsonResult LoadByName(string txtSearchVal, string SearchBy)
{
JsonResult result = null;
if (SearchBy.ToUpper() == "FIRSTNAME")
{
result = LoadByFirstName(txtSearchVal);
}
else if (SearchBy.ToUpper() == "LASTNAME")
{
result = LoadByLastName(txtSearchVal);
}
return result;
}
private JsonResult LoadByFirstName(string txtSearchVal)
{
var jsonData = new
{
records = tskgrp.UserDetails.Count(),
rows = (
from user in tskgrp.UserDetails
where (user.FirstName.StartsWith(txtSearchVal))
select new
{
i = user.ID,
cell = new string[]
{
user.ID.ToString(),
user.FirstName,
user.LastName,
user.Active.ToString()
}
}).ToArray()
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
private JsonResult LoadByLastName(string txtSearchVal)
{
var jsonData = new
{
records = tskgrp.UserDetails.Count(),
rows = (
from user in tskgrp.UserDetails
where (user.LastName.Contains(txtSearchVal))
select new
{
i = user.ID,
cell = new string[]
{
user.ID.ToString(),
user.FirstName,
user.LastName,
user.Active.ToString()
}
}).ToArray()
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}