Return List<object> 来自 IEnumerable C#

Return List<object> from IEnumerable C#

我有一个方法:

public List<AxeResult> LoadAxes(string kilometriczone, string axe)
{
    IEnumerable<AxeResult> allAxes = PullAxes();
    var findAxes = allAxes.Select(a => a.KilometricZone.StartsWith(kilometriczone) || a.KilometricZone.StartsWith(axe));

    return findAxes.Cast<AxeResult>().ToList();
}

我有这个错误:

IEnumerable<bool> does not contain a definition for ToList and the best extension method overload Enumerable.ToList<AxeResult> ( IEnumerable<AxeResult>) requires a receptor type IEnumerable<AxeResult>

我想return一个搜索操作后的AxeResult列表。

你想要的是过滤集合。这就是 Enumerable.Where 的用途:

public List<AxeResult> LoadAxes(string kilometriczone, string axe)
{
    return PullAxes()
        .Where(a => a.KilometricZone.StartsWith(kilometriczone) || 
                    a.KilometricZone.StartsWith(axe))
        .ToList();
}

除了给出的答案之外的一些解释:

Where() 方法的作用类似于 filter 和 returns 同一集合的子集

Select()方法使投影和returns新集

关于 .Select() 和 Where() 方法之间的差异有全面的解释 here