C# LINQ 从列表中选择

2024-02-25

我有一个从 xml 文档返回的事件 ID 列表,如下所示

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();  
    }

我现在需要查询数据库以匹配等于从上述方法返回的 eventId 的事件。所以我会有类似的东西:

select * from eventsdb where eventId in GetEventIdsByEventDate()

我怎样才能使用 LINQ 做到这一点


我似乎无法得到任何有效的答案。

这是从 XML feed 中查找 eventId 的方法

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;
    }

这是在我的数据库中查找事件的方法

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);
    }

这是在我的数据库中查找 XML 中任何匹配的 eventId 的方法

public IEnumerable<EventFeed> FilteredEvents(DateTime eventDate)
    {

        return GetAllEventsFromDatabase().Where(p => GetEventIds(eventDate).Contains<EventsDetails>(p.EventShowCode)); 
    }

该项目无法构建并出现以下错误:

错误 9 参数“2”:无法从“字符串”转换为“Events.EventsDetails”


        var eventids = GetEventIdsByEventDate(DateTime.Now);
        var result = eventsdb.Where(e => eventids.Contains(e));

如果您要返回List<EventFeed>在方法内部,您应该更改方法返回类型IEnumerable<EventFeed> to List<EventFeed>.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# LINQ 从列表中选择 的相关文章

随机推荐