2016-12-03 2 views
0

Приветствуем полезное сообщество!Фильтр C# Список сущностей

Ребята у меня есть проблема с/SQL Server 2014 проекта C# Entity, что дает мне трудные времена

у меня есть процедура с этим результатом установить

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 

В моей программе С # У меня есть список который подается из этой процедуры через Entyity Framework

Чтобы не создавать другую процедуру и другой СПИСОК, существует ли способ, в зависимости от моих потребностей, преобразовать результат из списка в C# следующим образом?

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

Так что это в основном тот же самый результат, но DISTINCT с RateCode пусто и цена = 0

мне нужно как наборы результатов для моей обработки. Я делаю для петель и заполнить XMLs так, когда мне нужно только RoomType-Availability, если я застрял с первым результатом я получить те же типы номеров, как многие TmES как RateCodes существуют, которые не приемлемы

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

Thanx заранее !

+0

Почему цена должна быть 0? Вероятно, должна быть сумма двух рядов? Также вы должны выбрать, что должно быть вашим 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