【发布时间】:2011-06-15 17:39:17
【问题描述】:
我正在尝试使用 LINQ 从 List<CustomObject> 创建一个 Dictionary<string, List<CustomObject>>。我可以使用“var”让它工作,但我不想使用匿名类型。这是我所拥有的
var x = (from CustomObject o in ListOfCustomObjects
group o by o.PropertyName into t
select t.ToList());
一旦我拥有x,我也尝试使用来自 LINQ 库的Cast<>(),但是我遇到了编译问题,因为它是无效的演员表。
【问题讨论】:
-
如果你尝试 var x = (from CustomObject o in ListOfCustomObjects group o by o.PropertyName into t select t).ToList();
-
有什么理由需要这样做而不是使用为此而设计的 ToLookup?
-
乔恩,您能否发布一个示例,说明 ToLookup 在这种情况下如何工作?我不熟悉那种 LINQ 方法。
-
@JonSkeet 你太棒了! (我的意思是,每个人都已经知道了,但仍然。)我不打算使用 ToLookup 的原因是因为我直到现在才听说过它。现在我知道了!
-
为了完整起见,使用
var不是使用“匿名”类型,而是使用“隐式”类型。匿名类型是编译器创建的用于处理new { thing = "stuff" };构造的新类。隐式类型是现有的类,var只是在立即分配变量时引用它们的便捷方式,可以从分配给它的对象的类型推断变量类型。您甚至可以隐式键入引用匿名类型的变量,即:var a = new { thing = "stuff" };
标签: linq dictionary