我很好,真的因爲某種原因而陷入困境。我有一堆XML通過linq我已經調整,以適應我的DTO對象,這工作正常,但我需要一個額外的過濾器,只返回房間有充分的可用性一段時間的房間類型。基於LINQ中子列表的數量限制對象
現在我的原始查詢設置DTO的工作正常,但我想補充一些東西,只返回房間有可用率的整個時期,所以說你想預訂10天,你應該只得到房間類型後面有完整的10天可用。我原來的查詢如下:
var items = (
from rt in data.Descendants("RoomType")
select new RoomType
{
name = rt.Descendants("RoomDescription").Descendants("Text").SingleOrDefault().Value,
rooms = (
from r in rt.Descendants("Room")
select new Room
{
Name = r.Attribute("id").Value,
rates = (
from rr in r.Descendants("RoomRate")
where DateTime.Parse(rr.Attribute("EffectiveDate").Value) >= startDate
where DateTime.Parse(rr.Attribute("EffectiveDate").Value) <= endDate
select new RoomRate
{
EffectiveDate = DateTime.Parse(rr.Attribute("EffectiveDate").Value)
})
})
});
,如果它是在所有可能在此查詢這將是驚人的限制,但我不能看到如何做到這一點。
當我試圖從這一個的背面創建另一個查詢我不知道我怎麼能從RoomType對象查詢Rooms.RoomRates的計數來返回。我試圖
var result = items.Where(i => i.rooms.Where(r => r.rates.Count() == 10));
但是這給了我一個例外,它不能轉換的IEnumerable爲bool,。任何()編譯,但返回的一切(如可能預期)。
有人知道我在這裏做錯了嗎?
編輯:**這是它是如何把數據從此刻
房間類型:單 - 1間(天availble的10) - 2間(可用天數10)
房型:雙牀 - 3間(可用天數10) - 4間(天可用4)
什麼,我試圖做的是從返回排除4間爲它不符合標準的天
所以我應該得到的回覆是:
房間類型:單 - 1間(天availble的10) - 2間(天可用10) 客房類型:雙 - 3間(天可用10)
希望這使得它更清楚一點
感謝
你的意思是你要創建新的'RoomType's,只有具有一定的'Room'的S' – SLaks
嗨SLaks,我想返回所有房型,然後只返回房間有所需的可用性(即有10天可用) – Modika