我有一个LINQ查询,并且需要WHERE
个句子。
var query = DbProvider.DB.AsEnumerable().Where(p => p.Accepte.HasValue).OrderByDescending(p => p.Score).Select((user, index) => new
{
user.Id,
user.Score,
index
})
.Where(user => user.Id == Id).FirstOrDefault();
如果我删除.Where(p => p.Accepte.HasValue)
它有效,但位置不正确。因为它包括不被接受的用户。
当我添加.Where(p => p.Accepte.HasValue)
时,它返回null。
我应该如何使用它?
答案 0 :(得分:1)
如果属性Accepte
是nullable布尔值,您还需要通过评估Value
- 属性来检查值本身,因为HasValue
- 属性可空类型仅指示是否存在可用值。它基本上是检查值是否为null
。
为了实现您的目标,请使用以下代码:
var query = DbProvider.DB
.AsEnumerable()
.Where(p => p.Accepte.HasValue && p.Accepte.Value)
.OrderByDescending(p => p.Score).Select((user, index) => new
{
user.Id,
user.Score,
index
})
.FirstOrDefault(user => user.Id == Id);