IEnumerable dönüştürme ve belki bu konuda yaşıyorum olası bir çözüm ... Ben yerel kuruluşlar içine bir veritabanından bazı verileri çekmek için LINQ to SQL kullandıkbirileri ışık tutabilir umut EntitySet
. Bir alışveriş sepeti sisteminden ürünlerdir. Bir ürün KitGroups (bir EntitySet (System.Data.Linq.EntitySet) içinde depolanır. KitGroups KitItems koleksiyonlarını içerir ve KitItems iç içe geçmiş ürünler (özgün ürün türüne bağlanan) içerebilir. özyineleşmiş)
Bu varlıklardan XML'e LINQ kullanarak XML yapıyorum - hepsi burada iyi - XML'im güzel görünüyor, iç içe ürün üretmek için kendini çağıran "GenerateProductElement" işlevini çağırıyor. Harika şeyler
Ancak, burada sıkıştığım yer ... Şimdi bu XML'i orijinal nesnelere (Linq'den SQL'e otomatik olarak oluşturulmuş) geri döndürmeye çalışıyorum ... ve buradaki problem yatıyor. Linq tO Sql koleksiyonlarımı bekliyor EntitySet koleksiyonları olmakla birlikte, Linq to Xml (ki ben tyr deserailise için kullanmak için) IEnumerable döndürüyor.
2 arasında bir kaç yol almayı deneyimledim, ancak hiçbir şey işe yaramıyor gibi görünüyor ... Ben sadece elle Kitlesel KitTemellerini belirlemek için bazı funky döngüler ve koşullarla elimden geldiğimi düşünmeye başlıyorum. ... vb), ancak gerçekten oldukça zor ve bu kod oldukça çirkin olması muhtemel, bu yüzden bu problem için daha şık bir çözüm bulmayı çok isterim.
Herhangi bir öneriniz var mı? İşte
bir kod parçacığı var:private Product GenerateProductFromXML(XDocument inDoc)
{
var prod = from p in inDoc.Descendants("Product")
select new Product
{
ProductID = (int)p.Attribute("ID"),
ProductGUID = (Guid)p.Attribute("GUID"),
Name = (string)p.Element("Name"),
Summary = (string)p.Element("Summary"),
Description = (string)p.Element("Description"),
SEName = (string)p.Element("SEName"),
SETitle = (string)p.Element("SETitle"),
XmlPackage = (string)p.Element("XmlPackage"),
IsAKit = (byte)(int)p.Element("IsAKit"),
ExtensionData = (string)p.Element("ExtensionData"),
};
//TODO: UUGGGGGGG Converting b/w IEnumerable & EntitySet
var kitGroups = (from kg in inDoc.Descendants("KitGroups").Elements("KitGroup")
select new KitGroup
{
KitGroupID = (int) kg.Attribute("ID"),
KitGroupGUID = (Guid) kg.Attribute("GUID"),
Name = (string) kg.Element("Name"),
KitItems = // THIS IS WHERE IT FAILS - "Cannot convert source type IEnumerable to target type EntitySet..."
(from ki in kg.Descendants("KitItems").Elements("KitItem")
select new KitItem
{
KitItemID = (int) ki.Attribute("ID"),
KitItemGUID = (Guid) ki.Attribute("GUID")
});
});
Product ImportedProduct = prod.First();
ImportedProduct.KitGroups = new EntitySet<KitGroup>();
ImportedProduct.KitGroups.AddRange(kitGroups);
return ImportedProduct;
}
enter code here
Ben SQL burada belirtilen tüm varlıklar (Ürün, KitGroup, KitItem, vs) Linq tarafından üretildiğini eklemek gerekir - hayır haritalama ile geri başka kuruluşlara (alışveriş sepeti, bu bağlamda sadece xml ve veri tabanına serileştirme/serileştirme aracı olarak varlıkları kullanırlar.Yaptığım işlevsellik bir ürünü tüm kit grupları, kitItems ve Bir ortamdan iç içe geçmiş ürünler ve başka bir ürüne içe aktarma
Ah kullanabilirsiniz uzatma yöntemini oluşturmak, Tam olarak neyim peşindeyim ... teşekkürler heav Jinal! – Jeeby
Bana da yardımcı oldu, teşekkürler! –
Teşekkürler dostum, sen beni kurtardın. Çağlardan beri aynı sorunla uğraşıyordum ... –