C# 数组到字典

C# 数组到字典,c#,lambda,C#,Lambda,我正试图将此\u valueAdds=List放入网格项(字典),其中\u valueAdds是键,所有值都是false。但我不知道如何与拉姆达合作。这就是我到底走了多远。我确实成功地做了一个while循环,但我想学着用Lamda做 gridItems = new Dictionary<ValueAddedItemHelper, bool>(); gridItems = _valueAdds.Select(k => new { k }).ToArray().ToDictiona

我正试图将此
\u valueAdds=List
放入
网格项
字典
),其中
\u valueAdds
是键,所有值都是
false
。但我不知道如何与拉姆达合作。这就是我到底走了多远。我确实成功地做了一个while循环,但我想学着用Lamda做

gridItems = new Dictionary<ValueAddedItemHelper, bool>();
gridItems = _valueAdds.Select(k => new { k }).ToArray().ToDictionary(t => t, false);
gridItems=newdictionary();
gridItems=_valueAdds.Select(k=>new{k}).ToArray().ToDictionary(t=>t,false);

您需要提供一个lambda表达式作为第二个参数(或者以其他方式创建委托,但lambda表达式将是最简单的)。请注意,对
ToArray
的调用不是必需的,您创建的空字典也不是必需的。只需使用:

gridItems = _valueAdds.Select(k => new { k })
                      .ToDictionary(t => t, t => false);
我不清楚你为什么在这里使用匿名类型。。。特别是,这将不是一个
值addeditemHelper
。你需要投影吗?也许只是:

gridItems = _valueAdds.ToDictionary(t => t, t => false);
您不需要ToArray().ToDictionary()。您只需执行一个ToDictionary()。你不需要第一行。第二行将创建并填充字典

守则:

gridItems = _valueAdds.ToDictionary(p => p, p => false);

假设
\u valueAdds
是一个
IEnumerable
,您可以执行以下操作:

gridItems = _valueAdds.ToDictionary(x => x, x => false);
差不多

var gridItems = _valueAdds.ToDictionary(k=>k,i=>false);
Select(k=>new{k})
就是问题所在;它创建了一个匿名类型,其属性名为
k
。只是:

var gridItems = _valueAdds.ToDictionary(t => t, t => false);

谢谢你的解释,我显然为自己解决了很多复杂的问题。
var gridItems = _valueAdds.ToDictionary(t => t, t => false);