C# 列表(T).ForEach不是使用Xamarin定义的

C# 列表(T).ForEach不是使用Xamarin定义的,c#,generics,foreach,xamarin,xamarin.forms,C#,Generics,Foreach,Xamarin,Xamarin.forms,我从我的一个朋友那里得到了一些代码,它在windows环境下工作得非常好。申请表格。 当我尝试在Xamarin.Forms项目中使用相同的代码时,它会说: System.Collections.Generic.List>'没有“ForEach”的定义。[…](可能缺少一个“using”(从德语翻译) 我有: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys

我从我的一个朋友那里得到了一些代码,它在windows环境下工作得非常好。申请表格。 当我尝试在Xamarin.Forms项目中使用相同的代码时,它会说:

System.Collections.Generic.List>'没有“ForEach”的定义。[…](可能缺少一个“using”(从德语翻译)

我有:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Xamarin.Forms;
using System.Reflection;
以下是给出错误的代码:

public Company GetCompanyById(int companyId) {
        Company company = new Company();

        allContinents
             .MyContinents
             .Select(x => x.Countries)
             .ToList()
             .ForEach(countryList => {
                 countryList.ForEach(country => {
                     country.Cities.ForEach(city => {
                         city.Companies.ForEach(com => {
                             if (com.Id.Equals(companyId))
                                 company = com;
                         });
                     });
                 });
             });
        return company;
    }
为什么它不能像在windows.forms应用程序中那样工作? 附:这是第一个用蓝色下划线的字体


谢谢

您正在使用.NET的可移植类库子集;这不包括
List.ForEach

就我个人而言,我并不热衷于这种方法——在我看来,使用LINQ来选择合适的公司会更具可读性。毕竟,您正在执行一个查询


如果没有它不行,可以定义自己的ForEach扩展方法

public static class IEnumerableExtensions
{
    public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)
    {
        foreach(T item in enumeration)
        {
            action(item);
        }
    }
}
公共静态类IEnumerableExtensions
{
公共静态void ForEach(此IEnumerable枚举,操作)
{
foreach(枚举中的T项)
{
行动(项目);
}
}
}

一切都是最新的-.NET 4.5-Visual Studio 2013 Ultimate和Xamarin.iOs、Xamarin.Android以及Xamarin.Forms NuGet都是更新的Hanks。而且总是会有匹配项,因为用户只能从listview中选择一些数据,这些值将作为CompanyId@Hendrik:Right-在这种情况下,我将更改示例代码,以便在违反该假设时引发异常。
public static class IEnumerableExtensions
{
    public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)
    {
        foreach(T item in enumeration)
        {
            action(item);
        }
    }
}