2012-01-09 109 views
0

如果Sessions.Current.AdminProductId为null,是否可以忽略Where子句?我想将下面的代码优化成一行代码。Linq to Sql在Where子句中为空

if (Sessions.Current.AdminProductId == null) 
    gvUsers.DataSource = DataAccess.Instance.Users; 
else 
    gvUsers.DataSource = DataAccess.Instance.Users.Where(p => p.Orders.Any(o => o.ProductId == Sessions.Current.AdminProductId)); 
+0

什么是这个代码的问题? – 2012-01-09 08:37:38

+0

我只是想优化它。 – Tomas 2012-01-09 08:42:55

回答

2

你只需要添加空校验where子句中是这样的:

gvUsers.DataSource = DataAccess.Instance.Users.Where(p => (Sessions.Current.AdminProductId == null) || (Sessions.Current.AdminProductId != null && p.Orders.Any(o => o.ProductId == Sessions.Current.AdminProductId))); 
+0

不需要第一个空检查'(Sessions.Current.AdminProductId == null)'。 – Magnus 2012-01-09 20:47:32