AsEnumerable with Where in it

时间:2013-09-23 12:02:55

标签: c# .net linq

我有一个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。

我应该如何使用它?

1 个答案:

答案 0 :(得分:1)

如果属性Acceptenullable布尔值,您还需要通过评估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);