2016-04-15 136 views
2

我有一個方法:返回列表<object>自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>

我想搜索操作之後返回AxeResult的名單。

+4

您可以通過'StartsWith'使用'Select',它會返回一個'bool'。也許你想要使用where語句呢? – wimh

+2

該錯誤消息很奇怪。我希望運行時間'InvalidCastException'關於不能將'bool'強制轉換爲'AxeResult'。 – juharr

回答

6

你想要的是過濾集合。這就是Enumerable.Where是:

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

除了給出答案的一些解釋:

凡()方法的作用就像一個過濾並返回同一組的一個子集

選擇()方法制作投影並返回new set

關於.Select()和Where()方法here之間的區別有詳細的解釋。

相關問題