我很好奇这个程序是否可以以更加优雅和清洁的方式取得成功?
foreach (MediaTitle item in mediaTitleCollection)
{
if (item is FilmMedia)
{
FilmMedia tempItem = (FilmMedia) item;
sum += tempItem.Playtime;
}
}
提前致谢。
答案 0 :(得分:14)
var sum = mediaTitleCollection.OfType<FilmMedia>().Sum(x => x.Playtime);
答案 1 :(得分:5)
您可以使用OfType<T>
进行类型检查和强制转换(仅过滤到FilmMedia
类型的元素),然后根据PlayTime
属性计算总和:
sum = mediaTitleCollection.OfType<FilmMedia>()
.Select(x=> x.Playtime)
.Sum();
答案 2 :(得分:4)
非LINQ:
foreach (MediaTitle item in mediaTitleCollection)
{
FilmMedia tempItem = item as FilmMedia;
if (tempItem != null)
{
sum += tempItem.Playtime;
}
}