Reputation: 173
I use MVC 4 and There are 5 dropdownlist in my view. when dropdownlist selected text and clicked button search I want to select from 4 table where dropdownlist selected . and if dropdownlist don't selected not checked in condition.
(from met in db.tblMet
from useMet in db.tblUseMet.Where(m => m.UseMetID == met.UseMetID_FK).DefaultIfEmpty()
from typeMet in db.tblTypeMet.Where(m => m.TypeMetID == met.TypeMetID_FK).DefaultIfEmpty()
from mod in db.tblMod.Where(m => m.ModID == met.ModID_FK).DefaultIfEmpty()
from affair in db.tblAffairs.Where(m => m.AffairID == met.AffairID_FK).DefaultIfEmpty()
from desert in db.tblDeserts.Where(m => m.DesertID == met.DesertID_FK).DefaultIfEmpty()
from city in db.tblCities.Where(m => m.CityID == met.CityID_FK).DefaultIfEmpty()
from user in db.tblUsers.Where(m => m.UserID == met.UserIDCreate_FK).DefaultIfEmpty()
from userCh in db.tblUsers.Where(m => m.UserID == met.UserIDChange_FK).DefaultIfEmpty()
from setting in db.tblSettings.Where(m => m.SettingID == met.SettingID_FK).DefaultIfEmpty()
from sim in db.tblSims.Where(m => m.SimID == mod.SimID_FK).DefaultIfEmpty()
from typemod in db.tblTypeMod.Where(m => m.TypeModID == sim.TypeModID_FK_Kind).DefaultIfEmpty()
from gro in db.tblGroupMet.Where(m => m.GroupMetID == met.GroupMetID_FK).DefaultIfEmpty()
from group1 in db.tblMetRelateGroups.Where(x => x.MetID_FK == met.MetID).DefaultIfEmpty()
from status in db.tblStatus1.Where(m => m.StatusID == met.StatusID_FK).DefaultIfEmpty()
where ((city.CityID == City1||city.CityID !=null)
&& (typeMet.TypeMetID == Type1 || typeMet.TypeMetID != null)
&& (useMet.UseMetID == Usemeter1|| useMet.UseMetID != null)
&& (group1.GroupMetID_FK ==Group1 || group1.GroupMetID_FK != null)
&& (affair.AffairID ==Affair1 || affair.AffairID != null)
//|| desert.DesertID==Desert1
)
I want to selected dropdownlist selected and if don't select any, not checked in query. in above code select zero record.
Upvotes: 0
Views: 663
Reputation: 5155
You simply use the fluent syntax for this purpose. Here is an example:
var lQuery = from met in db.tblMet;
if (City1 != null)
lQuery = lQuery.Where(r => r.CityID == City1);
...
This way you can dynamically add conditions to your query.
If you want to add conditions with an logical OR you need a predicate builder, see https://stackoverflow.com/a/1775057/3936440.
Upvotes: 1