Нет поддерживаемого перевода в SQL - PullRequest
2 голосов
/ 14 июня 2011

Учитывая это в моем тексте данных:

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 Ответ

3 голосов
/ 14 июня 2011

К сожалению, вы не можете смешивать linq-to-objects и linq-to-sql свободно в одном запросе. Если вы выполняете запрос как запрос linq-to-sql, все должно быть переведено в sql.

Попробуйте разбить ваш код на два запроса. Первый должен получить соответствующие данные из базы данных, используя linq-to-sql. Второй использует linq-to-objects для окончательной фильтрации / манипулирования данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...