[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);
}
}
}
}
它说它不能被序列化因为它必须是可枚举的
我不明白为什么序列化器不能直接从实体工作,但我通过制作模型副本的列表来解决它,然后我序列化它。
希望这对你有帮助。