2016-12-03 88 views
0

嗨,有幫助的社區!篩選器C#實體列表

傢伙,我有一個C#實體/ SQL服務器2014項目,給了我一個問題,困難時期

我有這個結果集

OnDate   RoomType Available RateCode Price 
2016-12-12  DBL   2   BAR  200 
2016-12-12  TRP   4   BAR  300 
2016-12-12  DBL   2   NEW  250 
2016-12-12  TRP   4   NEW  350 

在我的C#程序我有一個列表中的程序那是通過Entity框架從該過程中提供的

爲了不創建另一個過程和另一個LIST,有沒有一種方法可以根據我的需要在C#中如下轉換我的List結果?

OnDate   RoomType Available RateCode Price 
2016-12-12  DBL   2      0 
2016-12-12  TRP   4      0 

所以它基本上是相同的結果,但不同與RateCode空的,而價格= 0

我需要兩個結果集爲我的處理。我的for循環做的,填充個XML,所以當我只需要RoomType可用性,如果我堅持的第一個結果我會得到同樣的房型爲存在諸多TMES爲RateCodes這是不能接受

for (int Row = 0; Row < myList.Count(); Row++) 
{ 
    blah 
} 

Thanx提前!

+0

爲什麼價格應該是0?可能應該是2行的總和?你也應該選擇什麼是你的RateCode。 – mybirthname

+0

我需要它爲0才能獲得Distinct RoomTypes - 可用性不會更改使用任何RateCode。 – PanosPlat

+0

你可以用GroupBy來做你的收藏,我會給你寫一些如何去做。 – mybirthname

回答

1

這將返回您想要的列表。您正在將您的收藏按RoomType和可用以及之後Select分組。

var result = myList.GroupBy(x => new { x.RoomType, x.Available }) 
        .Select(g => new Hotel { 
              OnDate = g.First().OnDate, 
              RoomType = g.Key.RoomType, 
              Available = g.Key.Available, 
              RateCode = "", 
              Price = 0 }) 
        .ToList(); 

這裏充分的代碼示例:dotNetFiddle

+0

優秀。謝謝 – PanosPlat