没有支持的SQL转换

时间:2011-06-14 15:03:28

标签: linq-to-sql

在我的datacontext中给出了这个:

public class EventsForUserID
{
    public string eventName { get; set; }
    public int eventID { get; set; }
    public string eventIdentifier { get; set; }
    public DateTime eventOpenDate { get; set; }
    public DateTime eventCloseDate { get; set; }
    public bool eventDisabled { get; set; }
    public EventsForUserID() {}
    public EventsForUserID(string pEventName, int pEventID, string pEventIdentifier, DateTime pEventOpenDate, DateTime pEventCloseDate, bool pEventDisabled)
    {
        this.eventName = pEventName;
        this.eventID = pEventID;
        this.eventIdentifier = pEventIdentifier;
        this.eventOpenDate = pEventOpenDate;
        this.eventCloseDate = pEventCloseDate;
        this.eventDisabled = pEventDisabled;
    }
}
public List<EventsForUserID> GetEventsForUserID(string userID, bool excludeDisabled)
{
    var e = 
        from ex in this.Exhibitors
            join ev in this.Events on ex.EventID equals ev.EventID
            where ex.UserID.ToString() == userID
            select new EventsForUserID (
                ev.EventName, 
                ev.EventID, 
                ev.EventID + "[::]" + ex.ExhibitorID + "[::]" + ex.AccountDisabled + "[::]" + ev.EventDisabled, 
                ev.OpenDate.Value, 
                ev.CloseDate.Value,
                ev.EventDisabled
            );
    if (excludeDisabled) {
        e = from ev in e
            where ev.eventDisabled != true
            select ev;
    }
    return e.ToList();
}

我收到错误:    成员'LeadsDataContext + EventsForUserID.eventDisabled'没有支持的SQL转换。

在return.ToList()行上。

我尝试了各种各样的...... AsQueryable()等

我认为它是因为EventsForUserID不是真正的sql表,但后来我认为LINQ用于对多种类型的对象执行查询。

我错过了某种演员。

非常感谢,N

1 个答案:

答案 0 :(得分:3)

不幸的是,你不能在同一个查询中自由地混合使用linq-to-objects和linq-to-sql。如果您将查询作为linq-to-sql查询运行,则所有内容都必须转换为sql。

尝试将代码拆分为两个查询。第一个应该使用linq-to-sql从数据库中检索相关数据。第二个使用linq-to-objects来进行数据的最终过滤/操作。