我很好奇,如果這個程序可以用更優雅更清潔的方式實現嗎?類型轉換和foreach
foreach (MediaTitle item in mediaTitleCollection)
{
if (item is FilmMedia)
{
FilmMedia tempItem = (FilmMedia) item;
sum += tempItem.Playtime;
}
}
在此先感謝。
我很好奇,如果這個程序可以用更優雅更清潔的方式實現嗎?類型轉換和foreach
foreach (MediaTitle item in mediaTitleCollection)
{
if (item is FilmMedia)
{
FilmMedia tempItem = (FilmMedia) item;
sum += tempItem.Playtime;
}
}
在此先感謝。
var sum = mediaTitleCollection.OfType<FilmMedia>().Sum(x => x.Playtime);
可以使用OfType<T>
的類型檢查和鑄造(濾波FilmMedia
類型的唯一元素),然後只計算基礎上,PlayTime
屬性的總和:
sum = mediaTitleCollection.OfType<FilmMedia>()
.Select(x=> x.Playtime)
.Sum();
出於某種原因,您的代碼中無法識別playtime。 – JavaCake 2012-02-28 21:14:24
呵呵,這個修正確實有效。這種方法稱爲什麼? – JavaCake 2012-02-28 21:15:21
應該基於您的原始代碼正常工作 - 您是否完全按照原樣使用它? – BrokenGlass 2012-02-28 21:15:26
非LINQ:
foreach (MediaTitle item in mediaTitleCollection)
{
FilmMedia tempItem = item as FilmMedia;
if (tempItem != null)
{
sum += tempItem.Playtime;
}
}
我喜歡這個答案跳過不必要的選擇轉換。 – asawyer 2012-02-28 21:18:14