我有一个视频集合,他们有一个字段类型标识符,告诉我视频是预告片,片段还是采访。
我需要将它们分成三个单独的集合。
var trailers = myMediaObject.Videos.Where(type => type.TypeIdentifier == 1);
var clips = myMediaObject.Videos.Where(type => type.TypeIdentifier == 2);
var interviews = myMediaObject.Videos.Where(type => type.TypeIdentifier == 3);
有更有效的方法吗?我喜欢在这里使用Linq。
答案 0 :(得分:8)
怎么样:
var lookup = myMediaObject.Videos.ToLookup(type => type.TypeIdentifier);
var trailers = lookup[1];
var clips = lookup[2];
var interviews = lookup[3];
请注意,这将立即实现结果,而您的第一个版本则没有。如果您仍然希望延迟执行,则可能需要使用GroupBy
- 尽管稍后会稍微复杂一些。这实际上取决于你需要对结果做些什么。