2011-06-14 51 views
2

在我的DataContext有鉴于此:没有支持转换为SQL

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

回答

3

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

尝试将您的代码拆分为两个查询。第一个应该使用linq-to-sql从数据库检索相关数据。第二个使用linq-to-objects来完成对数据的最终过滤/处理。

+0

谢谢你的指针。这已经解决了它:如果(excludeDisabled){e.ToList())中的ev从var ev_ventDisabled!= true select ev; e = etemp.AsQueryable(); } – ninety 2011-06-14 15:33:49

相关问题