我用IQueryable <T>做错了什么?

Gif*_*guy 1 .net c# linq ienumerable iqueryable

我认为IQueryable <T>是从IEnumerable中获得的<T>,所以为什么我不能像记录集合一样访问我的查询结果?

public bool DoLogIn(System.String strUserName, System.String strPassword)
{
    if (this.IsLoggedIn)
        return false;

    ASRDBDataContext ASRData = new ASRDBDataContext();
    IQueryable<user> CurrUser =
        from usr in ASRData.users
        where usr.userName == strUserName
        where usr.password == strPassword
        select usr;

    if (CurrUser.Count() != 1)
        return false;

    this.CurrUserID = CurrUser[0].userID;   // Error
    return true;
}
Run Code Online (Sandbox Code Playgroud)

返回的错误是:"无法将带有[]的索引应用于类型为'System.Linq.IQueryable <user>' 的表达式"

Ran*_*pho 11

IEnumerable不可索引.也不是IQueryable.

如果您想要LINQ查询的第一项,请尝试使用First(),FirstOrDefault(),Single()SingleOrDefault()方法.