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

时间:2014-08-26 10:17:22

标签: c# silverlight serialization

我正在尝试将查询结果存储到隔离存储应用程序中的XML中。 这是关于查询的我的来源,但问题是我无法将Productlist转换为List或Iqueryable,因此我可以将数据传递给Save_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);
                }
            }

        }
    }

它说它不能被序列化,因为它必须是不可数的

1 个答案:

答案 0 :(得分:0)

我无法弄清楚为什么序列化程序不能直接从实体工作,但我通过制作模型副本列表然后我序列化它来解决它。

希望这会有所帮助。