我用IQueryable <t>做错了什么?</t>

时间:2009-07-02 19:59:39

标签: c# .net 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;
}

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

1 个答案:

答案 0 :(得分:11)

IEnumerable不可索引。也不是IQueryable。

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