我有一个视频集合,它们有一个字段类型标识符,可以告诉我视频是预告片、剪辑还是采访。
我需要将它们放在 3 个单独的集合中。
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。
最佳答案
怎么样:
var lookup = myMediaObject.Videos.ToLookup(type => type.TypeIdentifier);
var trailers = lookup[1];
var clips = lookup[2];
var interviews = lookup[3];
请注意,这将立即实现结果,而您的第一个版本没有。如果您仍然想要延迟执行,您可能想改用 GroupBy
- 尽管稍后会稍微有点棘手。这实际上取决于您需要对结果做什么。
关于c# - Linq 从属性符合条件的列表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3853100/