c# - Linq 从属性符合条件的列表中选择

标签 c# linq

我有一个视频集合,它们有一个字段类型标识符,可以告诉我视频是预告片、剪辑还是采访。

我需要将它们放在 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/

相关文章:

c# - 将 '==' 运算符应用于泛型参数

c# - Linq to Entity 从 DateTime 获取日期

xml - 在 F# 中使用序列从对象中选择属性

c# - 获得一个随机数,只要它不在列表中

c# - OracleConnection.Open 抛出 ORA-12541 TNS 没有监听器

c# - 您可以在格式字符串中包含条件检查代码吗?

c# - Linq 错误 输入字符串的格式不正确。 System.Exception {System.FormatException}

c# - 如何在 LINQ WHERE 语句中使用 OR 运算符

c# - LINQ 包含在一对多的情况下,.Where() 不起作用?

javascript - 在 GridView 中显示没有绑定(bind)数据且未检索到结果的不同消息