具有多个条件的Linq@Where子句
这是我的导出ui 这是我的代码:具有多个条件的Linq@Where子句,linq,Linq,这是我的导出ui 这是我的代码: var wrlist = db.Tbl_WorkRequest.ToList().Where(c => c.WR_Status == wrstatus && (wrtype.Length != 0) && c.WR_F
var wrlist = db.Tbl_WorkRequest.ToList().Where(c => c.WR_Status == wrstatus &&
(wrtype.Length != 0) &&
c.WR_Family == wrfamily &&
wrfamily.Length!=0)
.Select(d => new {
WR_Title = d.WR_Title.ToString(),
WR_Type = d.WR_Type.ToString(),
WR_Family = d.WR_Family.ToString(),
WR_Status = d.WR_Status.ToString(),
WR_LocationAsset = d.WR_LocationAsset.ToString(),
WR_AssetName = d.WR_AssetName.ToString(),
WR_Requestor = d.WR_Requestor.ToString()
});
问题是,如果我只在dropdownlist:family中选择zone,它将生成正确的列表。
但当我选择dropdownlist:family&status时,它不会产生任何结果
这是表格:
我将更改您的代码以检查每个筛选条件并添加相应的筛选,然后转换为列表:
var wrq = db.Tbl_WorkRequest.AsQueryable();
if (wrstatus.Length > 0)
wrq = wrq.Where(wr => wr.WR_Status == wrstatus);
if (wrfamily.Length > 0)
wrq = wrq.Where(wr => wr.WR_Family == wrfamily);
var wrlist = wrq.Select(d => new {
WR_Title = d.WR_Title.ToString(),
WR_Type = d.WR_Type.ToString(),
WR_Family = d.WR_Family.ToString(),
WR_Status = d.WR_Status.ToString(),
WR_LocationAsset = d.WR_LocationAsset.ToString(),
WR_AssetName = d.WR_AssetName.ToString(),
WR_Requestor = d.WR_Requestor.ToString()
})
.ToList();
您确定从UI发送的状态值(
wrstattus
)与数据库匹配吗?是否检查生成的SQL?什么是区域?什么是下拉列表:家庭?什么是dropdownlist:家庭和地位,这意味着什么?为什么要在Where
之前使用ToList
,将整个表拉入内存?您需要在WR\uuu
字段上放置ToString()
的字段类型是什么?为什么您要与wrstatus
进行比较,然后测试wrtype.Length
?