我正在尝试使用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
,但是我遇到编译问题,因为它是无效的强制转换。
答案 0 :(得分:303)
Dictionary<string, List<CustomObject>> myDictionary = ListOfCustomObjects
.GroupBy(o => o.PropertyName)
.ToDictionary(g => g.Key, g => g.ToList());
答案 1 :(得分:14)
我不能评论@Michael Blackburn,但我猜你得到了downvote,因为在这种情况下GroupBy不是必需的。
使用它像:
var lookupOfCustomObjects = listOfCustomObjects.ToLookup(o=>o.PropertyName);
var listWithAllCustomObjectsWithPropertyName = lookupOfCustomObjects[propertyName]
此外,我已经看到这种方式比使用GroupBy()更好.ToDictionary()。
答案 2 :(得分:-1)
对于@ atari2600,这就是在lambda语法中使用ToLookup的答案:
var x = listOfCustomObjects
.GroupBy(o => o.PropertyName)
.ToLookup(customObject => customObject);`
基本上,它采用IGrouping并将它具体化为列表,使用PropertyName的值作为键。
答案 3 :(得分:-1)
以下内容对我有用。
test(convert) :- convert(foot, 2, inch, 24.0).
test(convert) :- convert(foot, 6, yard, 2.0).
test(convert) :- convert(chain, 2, foot, 132.0).