Linq2SQL .Union () выбрасывает «локальная последовательность не может быть использована ...» ошибка - PullRequest
0 голосов
/ 04 марта 2012

Я сейчас обновляю приложение для Windows Phone, написанное, очевидно, в Silverlight For Windows Phone. Я пытаюсь объединить две группы объектов, но получаю следующую ошибку

Локальная последовательность не может использоваться в реализациях операторов запросов LINQ to SQL, кроме оператора Contains.

Я читал о невозможности присоединиться к локальному массиву и таблице, однако я просто не понимаю, как реализовать это в моем коде ... Честно говоря, я даже не уверен, что это так. вызывает мою проблему.

Это мой текущий код:

    //Creating a 'blank' group of movies objects
    List<String> characters = new List<String> { "#", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
    List<Group<Movies>> emptyGroups = new List<Group<Movies>>();
    characters.ForEach(x => emptyGroups.Add(new Group<Movies>(x, new List<Movies>())));

    //Querying the database
    var allMovies = from m in dataContext.MoviesTable
                            orderby m.Title
                            select m;

    //Grouping all movie objects into a container of Group(string name, IEnumerable<T> items)
    var groupedMovies = (from t in allMovies
                         group t by t.Title.ToLower()[0].ToString() into grp
                         orderby grp.Key
                         select new Group<Movies>(grp.Key, grp));

    // This is where everything falls over.
    IEnumerable LongList.ItemsSource = (from t in groupedMovies.Union(emptyGroups)
                                              orderby t.Title
                                              select t).ToList();

List<T> 'emptyGroups' работает нормально, IQueryable<T> 'groupedMovies' работает нормально. Но я не могу понять, как их соединить.

Помощь? Довольно пожалуйста?

1 Ответ

1 голос
/ 04 марта 2012

Вы можете AsEnumerable() принудительно выполнить groupedMovies в SQL перед выполнением объединения, то есть

IEnumerable LongList.ItemsSource = (
    from t in goupedMovies.AsEnumerable().Union(emptyGroups)
    orderby t.Title
    select t).ToList();
...