将 for 循环转换为 linq

Convert a for loop to linq

我有一个简单的 for 循环,但我想将它转换为 Linq 和 return 空字典。如果对象为空。我以前没用过。谁能帮我解决这个问题?

private Dictionary<string, class1> getInfo(IEnumerable<class2> infos)
{
     Dictionary<string, class1> trs = new();
     if (infos is null)
         return trs;

     //This loop I want to convert to linq
     for(class2 info in infos)
     {
        class1 tr = new()
        {
            bi = info.bi,
            state = bi.State,
            res = Enum.value;
        };   
        trs.Add(info.value1, tr);
     }
     return trs;
}

您可以使用 .ToDictionary()IEnumerable<class2>

创建字典
Dictionary<string, class1> trs = infos
     ?.ToDictionary(key => Key.value1, 
                   value => new class1() {
                              bi = value.bi,
                              state = bi.State,
                              res = Enum.value
                            }) ?? new Dictionary<string, class1>(); 

免费建议 : 我强烈建议您在声明 class 和变量时使用正确的命名约定,这将使您的代码更具可读性和易于理解