2016-03-20 29 views
0

aşağıdakiÜreticilere tüm ürünlerden nasıl ulaşabilirim?

model.Manufacturers = PagedData.Products.Manufacturers.Select(t => new Manufacturer { ManufacturerID = t.ManufacturerID, ManufacturerName = t.ManufacturerName }).AsEnumerable(); 

döner

'System.Collections.Generic.IEnumerable 'Üretici' için tanımı ve bir birinci argüman kabul uzatma yöntemi 'Üretici' içermez 'System.Collections.Generic.IEnumerable' bulundu ( kullanarak bir yönerge veya bir montaj başvurusu eksik misiniz?)

Bununla birlikte, bu, beklendiği gibi kısmen çalışıyor, çünkü ilk ürün için üreticiyi getiriyor.

var firstOrDefault = PagedData.Products.FirstOrDefault(); 
if (firstOrDefault != null) model.Manufacturers = firstOrDefault.Manufacturers.Select(t => new Manufacturer { ManufacturerID = t.ManufacturerID, ManufacturerName = t.ManufacturerName }).AsEnumerable(); 

Tüm ürünlerden üreticilere nasıl sahip olabilirim?

cevap

1

Bu hatayı alıyorsunuz çünkü Products belirli bir sınıfın topluluğudur, ancak belirli bir özelliğe, yalnızca sınıfın tek bir örneği gibi erişmeye çalışıyorsunuzdur.

Sen listesini yineleyebilirsiniz ya:

foreach(var product in PagedData.Products) 
{ 
    model.Manufacturers.AddRange(
     product.Manufacturers.Select(t => new Manufacturer 
               { 
                ManufacturerID = t.ManufacturerID, 
                ManufacturerName = t.ManufacturerName 
               })); 
} 

Ya kullanarak listeyi düzleştirmek LINQ:

model.Manufacturers = 
    PagedData.Products.SelectMany(p => p.Manufacturers 
             .Select(t => new Manufacturer 
                 { 
                  ManufacturerID = t.ManufacturerID, 
                  ManufacturerName = t.ManufacturerName}) 
             .AsEnumerable()); 
1

İlk önce listenizi düzleştirmek zorundasınız. SelectMany yöntemini kullanarak bunu yapabilirsiniz.

model.Manufacturers = PagedData.Products 
           .SelectMany(product=>product.Manufacturers) 
           .Select(m => new Manufacturer 
           { 
            ManufacturerID = m.ManufacturerID, 
            ManufacturerName = m.ManufacturerName 
           }) 
           .AsEnumerable(); 

Kodunuzdan, her ürünün bir üretici listesine sahip olduğunu varsaydım. Buna dayanarak, Products.Manufactures'un üretici listesinin (veya bir dizi üreticilerin dizisinin) bir listesi olduğu açıktır. Bu yüzden listeni düzleştirmek zorundasın.

İlgili konular