我试图使用LINQ创建一个Dictionary<string, List<CustomObject>>
从List<CustomObject>
。我可以使用“ var”使它正常工作,但是我不想使用匿名类型。这是我所拥有的
var x = (from CustomObject o in ListOfCustomObjects
group o by o.PropertyName into t
select t.ToList());
我也曾经尝试Cast<>()
过从LINQ库使用它x
,但是由于它是无效的强制转换,我遇到了编译问题。
如果您尝试var x =(从ListOfCustomObjects组的CustomObject o通过o.PropertyName放入t选择t)。ToList();
—
esastincy 2011年
有什么理由需要这样做而不是使用为此目的而设计的ToLookup?
—
乔恩·斯基特
乔恩,能否请您举例说明在这种情况下ToLookup的工作方式?我对LINQ方法不熟悉。
—
Atari2600 2011年
@JonSkeet您真棒!(我的意思是,每个人都已经知道了,但仍然知道。)之所以我不打算使用ToLookup的原因是,直到现在我才听说过它。现在我明白了!
—
neminem
仅出于完整性考虑,使用
—
Michael Blackburn
var
不是使用“匿名”类型,而是使用“隐式”类型。匿名类型是由编译器创建的用于处理构造的新类new { thing = "stuff" };
。隐式类型是现有的类,var
只是在立即分配变量时引用它们的一种简便方法,可以从分配给它的对象的类型中推断出变量类型。您甚至可以隐式键入引用匿名类型的变量,即:var a = new { thing = "stuff" };