2012-03-04 16 views
1

我目前正在更新Windows Phone应用程序,显然,在Silverlight For Windows Phone中编写。 我试图联盟两组对象,但我收到以下错误Linq2SQL .Union()投掷'本地序列不能使用...'错误

本地序列不能在LINQ被用来查询经营者的SQL实现除包含运营商。

我已阅读有关无法加入当地的阵列和一张桌子,但我只是在如何实现这个在我的代码不知所措......坦率地说我不是,如果,即使确定是什么导致我的问题。

这是我当前的代码:

//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

可以AsEnumerable()强制groupedMovies在SQL执行在执行前盟,即

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

精彩,感谢这么多为! – Styff 2012-03-04 00:34:22