Reputation: 1
I am using web api 2 with entity frame work. On one condition I would like to know how I can reduce if/else
for the same code. I tried so hard but I do not get any result. I am using lambada expression.
// ALL Value Is Given By User
if (FightTypeId != 0 && Title != null && Date != null)
{
var getTblEvent = db.tblEvents.Where(e => e.FightTypeId == FightTypeId && e.Title.ToUpper().Trim().Contains(Title.ToUpper().Trim()) && e.Date == Date);
//this illustrates that user can give title in any case and title can be in 2-3 latter of title is enough for get output
var res = from e in getTblEvent
select new
{
EventID = e.EventID,
FightTypeId = e.FightTypeId,
Title = e.Title,
Date = e.Date,
Location = e.Location,
UserSelectFavoriteFlag = e.UserSelectFavoriteFlag,
Price = e.Price,
UserPredictionFlag = e.UserPredictionFlag,
PredictionStartDate = e.PredictionStartDate,
PredictionEndDate = e.PredictionEndDate,
ModifiedUserId = e.ModifiedUserId,
LastUserModifiedDate = e.LastUserModified,
};
return Ok(res);
}
//Only FightTypeID Is Given By User
else if (FightTypeId != 0 && Title == null && Date == null)
{
var getTblEvent = db.tblEvents.Where(e => e.FightTypeId == FightTypeId);
var res = from e in getTblEvent
select new
{
EventID = e.EventID,
FightTypeId = e.FightTypeId,
Title = e.Title,
Date = e.Date,
Location = e.Location,
UserSelectFavoriteFlag = e.UserSelectFavoriteFlag,
Price = e.Price,
UserPredictionFlag = e.UserPredictionFlag,
PredictionStartDate = e.PredictionStartDate,
PredictionEndDate = e.PredictionEndDate,
ModifiedUserId = e.ModifiedUserId,
LastUserModifiedDate = e.LastUserModified,
};
return Ok(res);
}
//TITLE Is Given By User
else if (FightTypeId == 0 && Title != null && Date == null)
{
var getTblEvent = db.tblEvents.Where(e => e.Title.ToUpper().Trim().Contains(Title.ToUpper().Trim()));
var res = from e in getTblEvent
select new
{
EventID = e.EventID,
FightTypeId = e.FightTypeId,
Title = e.Title,
Date = e.Date,
Location = e.Location,
UserSelectFavoriteFlag = e.UserSelectFavoriteFlag,
Price = e.Price,
UserPredictionFlag = e.UserPredictionFlag,
PredictionStartDate = e.PredictionStartDate,
PredictionEndDate = e.PredictionEndDate,
ModifiedUserId = e.ModifiedUserId,
LastUserModifiedDate = e.LastUserModified,
};
return Ok(res);
}
// Only DATE Is Given By User
else if (FightTypeId == 0 && Title == null && Date != null)
{
var getTblEvent = db.tblEvents.Where(e => e.Date == Date);
var res = from e in getTblEvent
select new
{
EventID = e.EventID,
FightTypeId = e.FightTypeId,
Title = e.Title,
Date = e.Date,
Location = e.Location,
UserSelectFavoriteFlag = e.UserSelectFavoriteFlag,
Price = e.Price,
UserPredictionFlag = e.UserPredictionFlag,
PredictionStartDate = e.PredictionStartDate,
PredictionEndDate = e.PredictionEndDate,
ModifiedUserId = e.ModifiedUserId,
LastUserModifiedDate = e.LastUserModified,
};
return Ok(res);
}
//FIGHTTYPEID And TITLE Is Given By User
else if (FightTypeId != 0 && Title != null && Date == null)
{
var getTblEvent = db.tblEvents.Where(e => e.FightTypeId == FightTypeId && e.Title.ToUpper().Trim().Contains(Title.ToUpper().Trim()));
var res = from e in getTblEvent
select new
{
EventID = e.EventID,
FightTypeId = e.FightTypeId,
Title = e.Title,
Date = e.Date,
Location = e.Location,
UserSelectFavoriteFlag = e.UserSelectFavoriteFlag,
Price = e.Price,
UserPredictionFlag = e.UserPredictionFlag,
PredictionStartDate = e.PredictionStartDate,
PredictionEndDate = e.PredictionEndDate,
ModifiedUserId = e.ModifiedUserId,
LastUserModifiedDate = e.LastUserModified,
};
return Ok(res);
}
// Only DATE And TITLE Is Given By User
else if (FightTypeId == 0 && Title != null && Date != null)
{
var getTblEvent = db.tblEvents.Where(e=>e.Title.ToUpper().Trim().Contains(Title.ToUpper().Trim()) && e.Date==Date);
var res = from e in getTblEvent
select new
{
EventID = e.EventID,
FightTypeId = e.FightTypeId,
Title = e.Title,
Date = e.Date,
Location = e.Location,
UserSelectFavoriteFlag = e.UserSelectFavoriteFlag,
Price = e.Price,
UserPredictionFlag = e.UserPredictionFlag,
PredictionStartDate = e.PredictionStartDate,
PredictionEndDate = e.PredictionEndDate,
ModifiedUserId = e.ModifiedUserId,
LastUserModifiedDate = e.LastUserModified,
};
return Ok(res);
}
//FightTypeID And Date Is Given By User
else if (FightTypeId != 0 && Title == null && Date != null)
{
var getTblEvent = db.tblEvents.Where(e => e.FightTypeId==FightTypeId && e.Date==Date);
var res = from e in getTblEvent
select new
{
EventID = e.EventID,
FightTypeId = e.FightTypeId,
Title = e.Title,
Date = e.Date,
Location = e.Location,
UserSelectFavoriteFlag = e.UserSelectFavoriteFlag,
Price = e.Price,
UserPredictionFlag = e.UserPredictionFlag,
PredictionStartDate = e.PredictionStartDate,
PredictionEndDate = e.PredictionEndDate,
ModifiedUserId = e.ModifiedUserId,
LastUserModifiedDate = e.LastUserModified,
};
return Ok(res);
}
// by defaultly shows all Details to user
else
{
var res = from e in db.tblEvents
select new
{
EventID = e.EventID,
FightTypeId = e.FightTypeId,
Title = e.Title,
Date = e.Date,
Location = e.Location,
UserSelectFavoriteFlag = e.UserSelectFavoriteFlag,
Price = e.Price,
UserPredictionFlag = e.UserPredictionFlag,
PredictionStartDate = e.PredictionStartDate,
PredictionEndDate = e.PredictionEndDate,
ModifiedUserId = e.ModifiedUserId,
LastUserModifiedDate = e.LastUserModified,
};
return Ok(res);
}
}
Upvotes: 0
Views: 71
Reputation: 2397
You could streamline it like this:
// by defaultly shows all Details to user
var getTblEvent = db.tblEvents;
// ALL Value Is Given By User
if (FightTypeId != 0 && Title != null && Date != null)
{
getTblEvent = db.tblEvents.Where(e => e.FightTypeId == FightTypeId && e.Title.ToUpper().Trim().Contains(Title.ToUpper().Trim()) && e.Date == Date);
}
//Only FightTypeID Is Given By User
else if (FightTypeId != 0 && Title == null && Date == null)
{
getTblEvent = db.tblEvents.Where(e => e.FightTypeId == FightTypeId);
}
//TITLE Is Given By User
else if (FightTypeId == 0 && Title != null && Date == null)
{
getTblEvent = db.tblEvents.Where(e => e.Title.ToUpper().Trim().Contains(Title.ToUpper().Trim()));
}
// Only DATE Is Given By User
else if (FightTypeId == 0 && Title == null && Date != null)
{
getTblEvent = db.tblEvents.Where(e => e.Date == Date);
}
//FIGHTTYPEID And TITLE Is Given By User
else if (FightTypeId != 0 && Title != null && Date == null)
{
getTblEvent = db.tblEvents.Where(e => e.FightTypeId == FightTypeId && e.Title.ToUpper().Trim().Contains(Title.ToUpper().Trim()));
}
// Only DATE And TITLE Is Given By User
else if (FightTypeId == 0 && Title != null && Date != null)
{
getTblEvent = db.tblEvents.Where(e=>e.Title.ToUpper().Trim().Contains(Title.ToUpper().Trim()) && e.Date==Date);
}
//FightTypeID And Date Is Given By User
else if (FightTypeId != 0 && Title == null && Date != null)
{
getTblEvent = db.tblEvents.Where(e => e.FightTypeId==FightTypeId && e.Date==Date);
}
var res = from e in getTblEvent
select new
{
EventID = e.EventID,
FightTypeId = e.FightTypeId,
Title = e.Title,
Date = e.Date,
Location = e.Location,
UserSelectFavoriteFlag = e.UserSelectFavoriteFlag,
Price = e.Price,
UserPredictionFlag = e.UserPredictionFlag,
PredictionStartDate = e.PredictionStartDate,
PredictionEndDate = e.PredictionEndDate,
ModifiedUserId = e.ModifiedUserId,
LastUserModifiedDate = e.LastUserModified,
};
return Ok(res);
Upvotes: 0
Reputation: 21887
It looks like you're just checking the existence of each parameter, and if they aren't null (or 0) you filter by it. You can check each param once and chain Where
calls to accomplish what you want:
var query = db.tblEvents;
if(FightTypeId != 0)
{
query = query.Where(e => e.FightTypeId == FightTypeId);
}
if(Title != null)
{
query = query.Where(e => e.Title.ToUpper().Trim().Contains(Title.ToUpper().Trim()));
}
if(Date != null)
{
query = query.Where(e => e.Date == Date);
}
var res = query.Select(e =>
new
{
EventID = e.EventID,
FightTypeId = e.FightTypeId,
Title = e.Title,
Date = e.Date,
Location = e.Location,
UserSelectFavoriteFlag = e.UserSelectFavoriteFlag,
Price = e.Price,
UserPredictionFlag = e.UserPredictionFlag,
PredictionStartDate = e.PredictionStartDate,
PredictionEndDate = e.PredictionEndDate,
ModifiedUserId = e.ModifiedUserId,
LastUserModifiedDate = e.LastUserModified,
};
return Ok(res);
Upvotes: 1