C# [Silverlight]将查询结果转换为列表

C# [Silverlight]将查询结果转换为列表,c#,silverlight,serialization,C#,Silverlight,Serialization,我正在尝试将查询结果存储到隔离存储应用程序中的XML中。 这是我关于查询的源代码,但问题是我无法将Productlist强制转换为List或Iqueryable,因此我可以将数据传递给Save\u Product方法。提前感谢你们的帮助 private void loadProductCombobox() { productDomainContext = new ProductDS(); EntityQuery<product> bb = f

我正在尝试将查询结果存储到隔离存储应用程序中的XML中。 这是我关于查询的源代码,但问题是我无法将Productlist强制转换为List或Iqueryable,因此我可以将数据传递给Save\u Product方法。提前感谢你们的帮助

 private void loadProductCombobox()
    {
        productDomainContext = new ProductDS();
        EntityQuery<product> bb = from b in productDomainContext.GetProductsQuery() select b;
        LoadOperation<product> res = productDomainContext.Load(bb, new Action<LoadOperation<product>>(loadProductComboboxcompleted), true);

    }
    private void loadProductComboboxcompleted(LoadOperation<product> obj)
    {
       selectProductComboBox.ItemsSource= productDomainContext.products;

     ****************Issue causing line*************
       IEnumerable<product> productList = (IEnumerable<product>)productDomainContext.products;
       List<product> productlist2 = (List<product>)productList;
       Save_Product(productlist2);        
     *******************   

    }

    public static void Save_Product(List<product> product)
    {
        using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (IsolatedStorageFileStream stream = store.OpenFile("Product.XML", FileMode.OpenOrCreate, FileAccess.Write))
            {
                using (TextWriter writer = new StreamWriter(stream))
                {

                    XmlSerializer serializer = new XmlSerializer(typeof(List<product>));
                    serializer.Serialize(writer, product);
                }
            }

        }
    }
我也尝试过这样做:

    private void loadProductCombobox()
    {
        productDomainContext = new ProductDS();
        EntityQuery<product> bb = from b in productDomainContext.GetProductsQuery() select b;
        LoadOperation<product> res = productDomainContext.Load(bb, new Action<LoadOperation<product>>(loadProductComboboxcompleted), true);

    }
    private void loadProductComboboxcompleted(LoadOperation<product> obj)
    {
       selectProductComboBox.ItemsSource= productDomainContext.products;
       Save_Product(productDomainContext.products);



    }

    public static void Save_Product(EntitySet<product> product)
    {
        using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (IsolatedStorageFileStream stream = store.OpenFile("Product.XML", FileMode.OpenOrCreate, FileAccess.Write))
            {
                using (TextWriter writer = new StreamWriter(stream))
                {

                    XmlSerializer serializer = new XmlSerializer(typeof(EntitySet<product>));
                    serializer.Serialize(writer, product);
                }
            }

        }
    }

它说它不能序列化,因为它必须是ienumerable

我不明白为什么序列化程序不能直接从实体中工作,但我通过制作模型副本的列表来解决它,然后我序列化了它


希望这会有所帮助

我不理解您的问题-您无法强制转换到列表,因此为什么不能使用productList.ToList?它给了我以下错误:反映类型“System.Collections.Generic.List`1[InventoryApplications.Web.EntityDataModel.product]”的错误。您确定将productDomainContext.Products强制转换到Products的行没有问题吗?它们是完全相同的类型,还是在两个相似的类之间映射?如果是从IEnumerable转换为List,您也可以尝试List productList2=new ListproductList;不,马什顿。尝试序列化列表时出错。