类型转换和foreach

Jav*_*ake 3 c#

我很好奇这个程序是否可以以更加优雅和清洁的方式取得成功?

        foreach (MediaTitle item in mediaTitleCollection)
        {
            if (item is FilmMedia)
            {
                FilmMedia tempItem = (FilmMedia) item;
                sum += tempItem.Playtime;
            }
        }
Run Code Online (Sandbox Code Playgroud)

提前致谢.

jas*_*son 14

var sum = mediaTitleCollection.OfType<FilmMedia>().Sum(x => x.Playtime);
Run Code Online (Sandbox Code Playgroud)


Bro*_*ass 5

您可以使用OfType<T>类型检查和强制转换(仅过滤到类型的元素FilmMedia),然后根据PlayTime属性计算总和:

sum = mediaTitleCollection.OfType<FilmMedia>()
                          .Select(x=> x.Playtime)
                          .Sum();
Run Code Online (Sandbox Code Playgroud)