Оператор LINQ "Кроме" - PullRequest
       9

Оператор LINQ "Кроме"

6 голосов
/ 12 апреля 2010

У меня есть список идентификаторов событий, которые я хочу исключить из моего оператора select, но не знаю, как это реализовать:

это то, что хранит мой список идентификаторов событий

List<int> ExcludedEvents;

и это мой оператор выбора (из ленты XML)

var allEvents = from eventsList in xmlDoc.Elements("shows").Elements("Show")
                select new EventFeed()
                  {
                      EventName = eventsList.Attribute("Name").Value,
                      EventSummary = eventsList.Attribute("ShortDesc").Value,
                      EventDetails = eventsList.Attribute("LongDesc").Value,
                      EventShowCode = eventsList.Attribute("Code").Value
                  };

Я хочу выбрать все события, кроме событий, которые имеют свой идентификатор события, соответствующий EventShowCode значение

Я смотрел на за исключением оператора , но не уверен, как его реализовать

1 Ответ

4 голосов
/ 12 апреля 2010

исходя из вашего кода в вопросе, он должен выглядеть примерно так ...

var filteredEvents = allEvents.Where(myEvent => !ExcludedEvents.Contains(myEvent.EventShowCode));

Или, если вы просто хотите прикрепить его к концу оператора select, просто возьмите это Где и поместите его прямо в конец вашего Select из предыдущего запроса ...

var filteredEvents = xmlDoc.Elements("shows").Elements("Show") 
                     .Select( new  
                     { 
                         EventName = eventsList.Attribute("Name").Value, 
                         EventSummary = eventsList.Attribute("ShortDesc").Value, 
                         EventDetails = eventsList.Attribute("LongDesc").Value, 
                         EventShowCode = eventsList.Attribute("Code").Value 
                     })
                     .Where(myEvent => !ExcludedEvents.Contains(myEvent.EventShowCode));
...