【发布时间】:2016-04-06 13:54:25
【问题描述】:
我使用 MVC 4,我认为有 5 个下拉列表。当下拉列表选择文本并单击按钮搜索时,我想从选择下拉列表的 4 个表中进行选择。如果没有选中下拉列表,则未选中。
(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
)
我想选中已选中的下拉列表,如果不选择任何,则未签入查询。在上面的代码中选择零记录。
【问题讨论】:
-
@GertArnold 但如何?我的代码没有选择任何符合此条件的记录
-
也许你应该问一个明确的问题。显然 在上面的代码中选择零记录 是一个问题陈述,而不是一个要求。无论如何,您最好动态添加条件,例如:stackoverflow.com/a/14622200/861716.
-
顺便说一句,您最初的错误是它应该是
|| city.CityID == null等(而不是!=)。但是,如果您使用该代码,它将构建非常糟糕的查询。动态添加谓词。另外,我强烈建议使用导航属性而不是所有这些冗长的连接。 -
@GertArnold 感谢您的帮助