J'ai une liste d'identifiants d'événements renvoyés par un document xml, comme indiqué ci-dessous.
public IEnumerable<EventFeed> GetEventIdsByEventDate(DateTime eventDate)
{
return (from feed in xmlDoc.Descendants("Show")
from ev in feed.Elements("Event")
where Convert.ToDateTime(ev.Attribute("Date").Value).ToShortDateString() == eventDate.ToShortDateString()
select new EventFeed()
{
EventShowCode = feed.Attribute("Code").Value
}).ToList();
}
J'ai maintenant besoin d'interroger ma base de données pour faire correspondre les événements qui correspondent aux ID d'événements retournés par la méthode ci-dessus :
select * from eventsdb where eventId in GetEventIdsByEventDate()
comment puis-je faire cela en utilisant LINQ
Je n'arrive à faire fonctionner aucune des réponses.
C'est la méthode qui recherche les identifiants d'événements à partir d'un flux XML.
public IList<EventsDetails> GetEventIds(DateTime eventDate)
{
var eventids = (from feed in xmlDoc.Descendants("Show")
from ev in feed.Elements("Event")
where Convert.ToDateTime(ev.Attribute("Date").Value).ToShortDateString() == eventDate.ToShortDateString()
select new EventsDetails()
{
EventId = feed.Attribute("Code").Value
}).ToList();
return eventids;
}
voici la méthode qui recherche les événements dans ma base de données
public IEnumerable<EventFeed> GetAllEventsFromDatabase()
{
var allEvents = from eventsList in GetEventsList()
select new EventFeed()
{
EventName = eventsList.Title,
EventSummary = eventsList.Introduction,
EventShowCode = eventsList.EventId,
EventImageSmall = eventsList.EventImageThumbUrl,
EventUrl = eventsList.Url,
EventSortBy = eventsList.SortOrder
};
return allEvents.OrderBy(x => x.EventSortBy);
}
et voici la méthode pour rechercher tous les identifiants d'événements correspondants dans le XML qui existent dans ma base de données.
public IEnumerable<EventFeed> FilteredEvents(DateTime eventDate)
{
return GetAllEventsFromDatabase().Where(p => GetEventIds(eventDate).Contains<EventsDetails>(p.EventShowCode));
}
le projet ne se construit pas avec l'erreur suivante :
Erreur 9 Argument '2' : ne peut pas convertir de 'string' en 'Events.EventsDetails'.