不包含Where和No扩展方法的定义?

时间:2014-02-05 10:00:23

标签: c# linq ienumerable

所以我已经查看了一段时间以找到我的问题的答案,我看到要添加using System.Linq,除了我已经有,所以我不知道我的代码是什么不编译。在我的代码上下文中,_accountreader存在,那为什么它说不存在它的定义呢?

return _accountReader.Where(x => x.Age);是编译器对我大喊大叫的地方。

public interface IAccountReader
{
    IEnumerable<Account> GetAccountFrom(string file);
}

public class XmlFileAccountReader : IAccountReader
{
    public IEnumerable<Account> GetAccountFrom(string file)
    {
        var accounts = new List<Account>();
        //read accounts from XML file
        return accounts;
    }
}

public class AccountProcessor
{
    private readonly IAccountReader _accountReader;
    public AccountProcessor(IAccountReader accountReader)
    {
        _accountReader = accountReader;
    }
    public IEnumerable<Account> GetAccountFrom(string file)
    {
        return _accountReader.Where(x => x.Age);
    }
}

public class Account
{
    public int Age { get; set; }
}

3 个答案:

答案 0 :(得分:4)

IAccountReader未实施IEnumerable<Account>

由于您提供了方法GetAccountFrom,因此您也可以使用此方法:

public IEnumerable<Account> GetAccountFrom(string file)
{
    return _accountReader.GetAccountFrom(file).Where(x => x.Age);
}

除了Where不正确之外,你需要提供一个谓词,例如:

.Where(x => x.Age <= 10);

答案 1 :(得分:2)

您可以添加System.Linq命名空间。由于在此命名空间下已经开发了它,因此应该添加它。

答案 2 :(得分:0)

我假设你打算实现这个:

public class AccountProcessor
{    
    // ...

    public IEnumerable<int> GetAgesFrom(string file)
    {
        return _accountReader.GetAccountFrom(file).Where(x => x.Age);
    }
}