I'm trying to convert this into an async method, but I don't think I'm querying the data properly to do it. What am I missing to:
- make this cleaner
- make it async
All the InventorySelection is, is a class with the various filter items.
private IEnumerable<T_IFS_Inventory> Getquery(T_IFS_InventorySelectDTO InventorySelection)
{
IEnumerable<T_IFS_Inventory> query = _db.T_IFS_Inventory.AsQueryable();
if (InventorySelection.SerialNumber != "" && InventorySelection.SerialNumber != null)
{
query = query.Where(q => q.SerialNumber == InventorySelection.SerialNumber);
}
else
{
if (InventorySelection.ScanDateStart != null)
{
query = query.Where(q => q.ScanDate >= InventorySelection.ScanDateStart);
if (InventorySelection.ScanDateEnd != null)
query = query.Where(q => q.ScanDate <= InventorySelection.ScanDateEnd);
}
if (InventorySelection.StatusDateStart != null)
{
query = query.Where(q => q.DateStatus >= InventorySelection.StatusDateStart);
if (InventorySelection.StatusDateEnd != null)
query = query.Where(q => q.DateStatus <= InventorySelection.StatusDateEnd);
}
if (InventorySelection.CategoryID != 0)
query = query.Where(q => q.CategoryID == InventorySelection.CategoryID);
if (InventorySelection.BrandID != 0)
query = query.Where(q => q.BrandID == InventorySelection.BrandID);
if (InventorySelection.ModelID != 0)
query = query.Where(q => q.ModelID == InventorySelection.ModelID);
if (InventorySelection.EmployeeID != 0)
query = query.Where(q => q.EmployeeID == InventorySelection.EmployeeID);
if (InventorySelection.StatusID != 0)
query = query.Where(q => q.StatusID == InventorySelection.StatusID);
if (InventorySelection.EmployeeStatusID != 0)
query = query.Where(q => q.EmployeeStatusID == InventorySelection.EmployeeStatusID);
if (InventorySelection.CurrentLocationID != 0)
query = query.Where(q => q.CurrentLocationID == InventorySelection.CurrentLocationID);
}
return query;
}
string.IsNullOrEmpty. Small change but very convenient.WhereIfextension method on IQueryable, which also was quite handy.