Linq从属性匹配条件的列表中选择

时间:2010-10-04 05:36:03

标签: c# linq

我有一个视频集合,他们有一个字段类型标识符,告诉我视频是预告片,片段还是采访。

我需要将它们分成三个单独的集合。

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。

1 个答案:

答案 0 :(得分:8)

怎么样:

var lookup = myMediaObject.Videos.ToLookup(type => type.TypeIdentifier);
var trailers = lookup[1];
var clips = lookup[2];
var interviews = lookup[3];

请注意,这将立即实现结果,而您的第一个版本则没有。如果您仍然希望延迟执行,则可能需要使用GroupBy - 尽管稍后会稍微复杂一些。这实际上取决于你需要对结果做些什么。