【问题标题】:Does not contain a definition for Where and no extension method?不包含 Where 的定义并且没有扩展方法?
【发布时间】:2014-02-05 10:00:23
【问题描述】:

所以我环顾四周寻找我的问题的答案,我想添加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; }
}

【问题讨论】:

  • IAccountReader 没有实现IEnumerable&lt;Account&gt;
  • 我已经有了。我在第一段中说过,解释了我的问题。 :(
  • 用日常术语来表达蒂姆的评论,_accountReader一个帐户阅读器。 Wherecollection 项进行操作,因此您在那里写的内容毫无意义。

标签: c# linq ienumerable


【解决方案1】:

IAccountReader 没有实现IEnumerable&lt;Account&gt;

既然你提供了一个方法GetAccountFrom,你也可以使用这个:

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

除了Where不正确,还需要提供谓词,例如:

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

【讨论】:

  • 蒂姆,你是个天才。太感谢了!只要 StackOverflow 允许我,我就会让它成为正确的答案。 :D。还要感谢所有尝试提供帮助的人。
【解决方案2】:

您可以添加 System.Linq 命名空间。既然已经在这个namespace下开发了where,就应该加进去。

【讨论】:

  • OP 在问题“using System.Linq ...我已经有了”并接受了修复他的代码的答案。
【解决方案3】:

我假设你打算实现这个:

public class AccountProcessor
{    
    // ...

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2019-05-05
    • 1970-01-01
    相关资源
    最近更新 更多