C# 我真的需要为此方法创建并返回集合吗?

C# 我真的需要为此方法创建并返回集合吗?,c#,.net-core,C#,.net Core,我见过人们使用yield-return,尽管每次我尝试在foreach中使用它时,它都会告诉我这样一个道理:CollectDictionary的主体不能是迭代器块,因为Dictionary不是一个interator接口类型 我有很多方法行下面,有没有办法减少样板文件 public Dictionary<string, object> CollectDictionary() { var configLines = File.ReadAllLines(_file).Where(I

我见过人们使用
yield-return
,尽管每次我尝试在
foreach
中使用它时,它都会告诉我这样一个道理:CollectDictionary的主体不能是迭代器块,因为Dictionary不是一个interator接口类型

我有很多方法行下面,有没有办法减少样板文件

public Dictionary<string, object> CollectDictionary()
{
    var configLines = File.ReadAllLines(_file).Where(IsValidConfigLine);
    var configElements = new Dictionary<string, object>();

    foreach (var configElement in configLines)
    {
        configElements.Add(configElement.Split("=")[0], configElement.Split("=")[1]);
    }

    return configElements;
}
公共词典收集词典()
{
var configLines=File.ReadAllLines(_File).Where(IsValidConfigLine);
var configElements=new Dictionary();
foreach(configLines中的var configElement)
{
configElements.Add(configElement.Split(“=”[0]),configElement.Split(“=”[1]);
}
返回配置元素;
}

您可以通过使用来减少代码量


您可以通过使用来减少代码量


Woops,我刚刚完成编码,是的,它是为了获取[1]作为第二个参数。afaik
yield return
仅适用于
IEnumerable
IEnumerable
IEnumerator
IEnumerator
。您可以在从
文件返回的
IEnumerable
上使用
.ToDictionary
。ReadAllLines().Where()
链将其转换为字典,对条目键和条目值使用单独的逐值投影。这是因为口述词不是迭代器接口类型(IEnumerable ect)。呜呜,我刚刚完成了它的编码,是的,它是为了获取[1]作为第二个参数。afaik
yield return
仅适用于
IEnumerable
IEnumerable
IEnumerator
IEnumerator
。您可以在从
文件返回的
IEnumerable
上使用
.ToDictionary
。ReadAllLines().Where()
链将其转换为字典,对条目键和条目值使用单独的逐值投影。这是因为dictorial不是迭代器接口类型(IEnumerable ect)。
public Dictionary<string, object> CollectDictionary()
{
    string[] configLines =  new string[]
        {
            "foo1=bar1",
            "foo2=bar2",
            "foo3=bar3",
            "foo4=bar4",
        };
        
        return configLines.Select(configElement => configElement.Split("="))
                          .ToDictionary(splt => splt[0], splt => (object)splt[1]);
}
{
    { "foo1", "bar1" },
    { "foo2", "bar2" },
    { "foo3", "bar3" },
    { "foo4", "bar4" }
}