简体   繁体   中英

How to select with multiple condition in linq?

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.

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 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM