LINQ 多重条件

问题描述 投票:0回答:1

我有这段代码,查询将分为 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;
         }

有什么建议我怎么写条件吗?

c# linq model-view-controller
1个回答
0
投票

如果我没有忽略任何条件,下面的示例应该是构建查询的另一种方式。也许这会让事情变得更容易?

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();
© www.soinside.com 2019 - 2024. All rights reserved.