2017-10-06 130 views
0

我有一个LINQ查询LINQ查询条件如下:基于条件

var query = from r in Context.Role() 
     join rg in Context.RoleGroup() on r.RoleId equals rg.FkRoleId 
     where r.RoleName != "guests" && r.RoleName != "SystemAdmin" 
    select rg; 

不过,我需要一个额外的条件包括,该SystemAdmin不应排除根据外部条件(比如,登录在用户中是超级用户)。

至于建议here,我修改了查询象下面这样:

 var query = from r in Context.Role() 
     join rg in Context.RoleGroup() on r.RoleId equals rg.FkRoleId 
     where r.RoleName != "guests" && (userId == 1 || r.RoleName != "SystemAdmin") 
    select rg; 

但我仍然可以在输出中看到SystemAdmin作用,即使用户id不是1我怎样才能得到需要的结果?

+2

如果使用标识不为1,那么你必须'r.RoleName = “客人” && (false || r.RoleName!=“SystemAdmin”)'这与你的第一个条件相同。这意味着用户ID等于1 –

回答

0

查询去如下:

var query = from r in Context.Role() 
    join rg in Context.RoleGroup() on r.RoleId equals rg.FkRoleId 
    where r.RoleName != "guests" && (userId == 1 || (userId> 1 && r.RoleName != "SystemAdmin")) 
select rg; 
0

使用此代码动态WHERE条件:

  if (printType == "BatchWise") 
      { 
       whereCondition = "BatchNo.Equals(@" + 0 + ")"; 
       array[0] = Convert.ToString(printNumber); 
      } 
      else 
      { 
       whereCondition = "TagNo.Equals(@" + 0 + ")"; 
       array[0] = Convert.ToString(printNumber); 
      } 

      using (var inventoryDb = new InventoryDb()) 
      { 
       var pricingInfo = (from price in invDb.Pricing.AsNoTracking() 
            where tagDtl.AvailableQuantity > 0 
            select new 
            { 
             PricingNo = price.PricingNo, 
             ............ 
            }).Where(whereCondition, array).ToList(); 
      }