所以我已经查看了一段时间以找到我的问题的答案,我看到要添加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; }
}
答案 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);
}
}