返回列表<;对象>;从IEnumerable C#

返回列表<;对象>;从IEnumerable C#,c#,ienumerable,tolist,C#,Ienumerable,Tolist,我有一个方法: public List<AxeResult> LoadAxes(string kilometriczone, string axe) { IEnumerable<AxeResult> allAxes = PullAxes(); var findAxes = allAxes.Select(a => a.KilometricZone.StartsWith(kilometriczone) || a.KilometricZone.Starts

我有一个方法:

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 allAxes=PullAxes();
var findAxes=allAxes.Select(a=>a.kimliczone.StartsWith(kimliczone)| | a.kimliczone.StartsWith(axe));
返回findAxes.Cast().ToList();
}
我有一个错误:

IEnumerable
不包含
ToList
和的定义 最佳扩展方法重载
可枚举。ToList
(
IEnumerable
)需要受体类型
IEnumerable


我想在搜索操作后返回AxeResult的列表。

您想要的是筛选集合。这就是为什么:

公共列表加载轴(字符串千米区域、字符串轴)
{
返回PullAxes()
.式中(a=>a.kimmriczone.StartsWith(kimmriczone)|
a、 公里地带。起始带(斧头))
.ToList();
}

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

Where()方法的作用类似于过滤器并返回同一集合的子集

Select()方法进行投影并返回新集合


关于.Select()和Where()方法之间的区别有全面的解释。

您使用
Select
with
StartsWith
,它返回一个
bool
。也许你想改用where语句?这个错误消息很奇怪。我本以为会出现一个运行时
InvalidCastException
关于无法将
bool
强制转换为
AxeResult
public List<AxeResult> LoadAxes(string kilometriczone, string axe)
{
    return PullAxes()
        .Where(a => a.KilometricZone.StartsWith(kilometriczone) || 
                    a.KilometricZone.StartsWith(axe))
        .ToList();
}