我有一個Linq表達式,它在對象列表上運行,在使用它之前,需要對其中一個對象屬性進行類型檢查。Linq類型檢查3次 - 有更好的形狀嗎?
例子:
IEnumerable<Employee> activeAuditOwners = (
from objectStateEntry in objectStateEntries
where (objectStateEntry.Entity is IAuditEntity) == true
&& (objectStateEntry.Entity as IAuditEntity).Active == true
select (objectStateEntry.Entity as IAuditEntity).Owner
);
我擔心的是我使用的類型檢查的3倍(是,如,AS)不覺得很乾。
這個查詢有沒有更好的形狀來避免這種情況(沒有創建第二個查詢)?
更新:感謝您的好回答,我爲未來的讀者整理了一下這個例子。
對不起拉迪斯拉夫,我的例子是誤導 - 我已經更新了它。我不知道objectStateEntry.Entity的類型是什麼 - 初始集合不是問題。 – Jamie 2011-05-28 14:48:31
他想過濾「實體」屬性,而不是集合本身。 – svick 2011-05-28 14:50:13
啊,是的,實際上OfType更好。在那裏忘了一秒鐘。絕對比我的建議更清潔! +1 – 2011-05-28 14:50:47