我有这段代码,查询将分为 3 个条件(男性、女性和一般)。在这种性别条件下,我打算创造另一种条件。在“thobby”中有 3 个选项:“music”、“art”、“general”,在这个“general”中我想同时获取音乐和艺术数据。是否可以再次在 if 中创建 if?
if (dat.gender == "MALE")
{
var que = (from Item in dobjc.mPanelist_Header
where 1 == 1
&& Item.gender.Equals(dat.gender)
&& Item.level.Equals(dat.level)
&& Item.thobby.Equals(dat.thobby)
select Item).AsNoTracking().ToList();
return que;
}
else if (dat.gender == "FEMALE")
{
var que = (from Item in dobjc.mPanelist_Header
where 1 == 1
&& Item.gender.Equals(dat.gender)
&& Item.level.Equals(dat.level)
&& Item.thobby.Equals(dat.hobby)
&& Item.class.Equals(dat.class)
select Item).AsNoTracking().ToList();
return que;
}
else
{
var que = (from Item in dobjc.mPanelist_Header
where 1 == 1
&& Item.level.Equals(dat.level)
&& Item.thobby.Equals(dat.thobby)
&& Item.class.Equals(dat.class)
select Item).AsNoTracking().ToList();
return que;
}
有什么建议我怎么写条件吗?
如果我没有忽略任何条件,下面的示例应该是构建查询的另一种方式。也许这会让事情变得更容易?
var que = dobjc.mPanelist_Header.Where(item
=> item.gender.Equals(dat.gender)
&& item.level.Equals(dat.level)
&& item.thobby.Equals(dat.thobby));
que = dat.gender switch {
"MALE" => que,
_ => que.Where(item => [email protected](dat.@class)),
};
var results = que.AsNoTracking().ToList();