我想創建一個擴展方法,我可以轉發IList的狀態並檢查它們存在的天氣,我認爲最好的方法是做一個ILIST - 但也許我錯了?這是將多個項目傳遞給方法的最佳方式 - 列表?它是一個通用的LIST,因此不會從Object轉換等。LINQ:檢查一個字段(db)是否包含ILIST中的項目?
基本上我有這個作爲簽名。
public static IQueryable<Building> WithStatus(this IQueryable<Building> qry,
IList<BuildingStatuses> buildingStatus)
{
//PSUEDO CODE
//return from v in qry
// where v.Status is IN MY LIST called buildingStatus
// select v;
}
並調用它我使用(下面的例子是在我的TDD中),它的工作原理很好,值在我上面的方法到達。
target.GetBuildings().WithStatus(new List<BuildingFilters.BuildingStatuses>()
{ BuildingFilters.BuildingStatuses.Available,
BuildingFilters.BuildingStatuses.Decommissioned });
所以基本上我有我的列表(IList的)它到達的擴展方法有2個值這是偉大的,但需要在LINQ說我需要說
return from v in qry
where v.Status is IN MY LIST called buildingStatus
select v;
非常感謝所有幫助,
至於我的擴展方法,它可以作爲我已經做了類似1但只傳遞一個類型BuildingStatus因此只有1 ...
感謝您的兩點意見,是的,這是很大的,忘了提,我需要調用擴展方法上的所謂向GetStringValue列表項的每個值,因爲列表枚舉命名BuildingStatuses的集合, GetStringValue是一個擴展方法,它返回一個字符串,我通過一個Attribute添加到每個Enum上。我想有些lambda可以做到這一點?我不確定,有什麼想法? – 2009-10-14 13:15:02
如果我不調用擴展方法(它的工作原理),那麼顯然這個枚舉將返回一個整數和它所需的字符串表示形式。我希望我能夠解釋這一點。 – 2009-10-14 13:19:54
我接受了一個答案,因爲我的問題已經有一段時間了,並且接受的答案給了我正在尋找的解決方案 – 2009-10-14 13:48:22