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

本文关键字:转换 列表 结果 查询 Silverlight | 更新日期: 2023-09-27 18:19:22

我试图将查询结果存储在独立的存储应用程序中的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);
                }
            }
        }
    }

它说它不能被序列化因为它必须是可枚举的

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

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

希望这对你有帮助。

相关文章: