C# 收益率与平行ForEach

C# 收益率与平行ForEach,c#,C#,下面是代码的测试示例 [……] public IEnumerable GetList(一个对象) { Parallel.ForEach(obj.yTest.Keys,key=> { 开关(钥匙) { 案例“1”: 返回新的B(){Name=obj.yTest[key]}; 打破 案例“2”: 返回新的B(){Name=obj.yTest[key]}; 打破 案例“3”: 返回新的B(){Name=obj.yTest[key]}; 打破 案例“4”: 返回新的B(){Name=obj.yTest[

下面是代码的测试示例 [……]

public IEnumerable GetList(一个对象)
{
Parallel.ForEach(obj.yTest.Keys,key=>
{
开关(钥匙)
{
案例“1”:
返回新的B(){Name=obj.yTest[key]};
打破
案例“2”:
返回新的B(){Name=obj.yTest[key]};
打破
案例“3”:
返回新的B(){Name=obj.yTest[key]};
打破
案例“4”:
返回新的B(){Name=obj.yTest[key]};
打破
}
});
}
}
B类
{
公共字符串名称{get;set;}
}
错误:
“只有方法、运算符和访问器才能包含“yield”语句”

您不能在这样的lambda中使用
yield
。但是,您可以用select语句替换
Parallel.ForEach

public IEnumerable<B> GetList(A obj)
{
    return obj.yTest.Keys.AsParallel().Select(key =>
    {
        switch (key)
        {
            case "1":
                return new B() {Name = obj.yTest[key]};
                break;
            case "2":
                return new B() {Name = obj.yTest[key]};
                break;
            case "3":
                return new B() {Name = obj.yTest[key]};
                break;
            case "4":
                return new B() {Name = obj.yTest[key]};
                break;
            default:
                return new B() {Name = obj.yTest[key]};
                break;
        }
    });
}
public IEnumerable GetList(一个对象)
{
返回obj.yTest.Keys.aspallel().Select(key=>
{
开关(钥匙)
{
案例“1”:
返回新的B(){Name=obj.yTest[key]};
打破
案例“2”:
返回新的B(){Name=obj.yTest[key]};
打破
案例“3”:
返回新的B(){Name=obj.yTest[key]};
打破
案例“4”:
返回新的B(){Name=obj.yTest[key]};
打破
违约:
返回新的B(){Name=obj.yTest[key]};
打破
}
});
}

这将给你一个并行选择,一个
IEnumerable
,以及你从
yield return

得到的延迟执行。检查这个:这个:你希望完成什么?
public IEnumerable<B> GetList(A obj)
{
    return obj.yTest.Keys.AsParallel().Select(key =>
    {
        switch (key)
        {
            case "1":
                return new B() {Name = obj.yTest[key]};
                break;
            case "2":
                return new B() {Name = obj.yTest[key]};
                break;
            case "3":
                return new B() {Name = obj.yTest[key]};
                break;
            case "4":
                return new B() {Name = obj.yTest[key]};
                break;
            default:
                return new B() {Name = obj.yTest[key]};
                break;
        }
    });
}