İki List'i Birleştirme Hatası
-
Merhaba arkadaşlar.
bir döngüyü yazamadım. saatlerdir düşünüyorum kurgulayamadım.
elimizde bir excell tablosu var. tabloyu bir datagirdview'e aktarıyorum.
sonrasında kullanıcıya aşağıdaki ekran görüntüsünün olduğu alanda
ürün bilgilerinin olduğu kolonu seçtiriyorum. Seçimden sonra excel tablosundaki
ürün bilgilerini grupluyorum. Sonra seçimin yapıldığı grid içindeki comboboxlar aracılığıyla
eşleştirme yaptırıyorum. Yani excell de yanlış yazılmış olan bir ürün bilgisinin doğrusunun sisteme tanımlanmasını amaçlıyorum.
Örnek excel de "DW S" yazılmış olması gereken "DİSCOVERY WATER SEMBOL".
Bu bilgileri bir liste atıyorum.Amacım şu excell deki veriye göre cari kaydı oluşturmak. sonrasında bu ÜRÜN BİLGİSİ kolonunda yer alan bilgiye görede
veritabanındaki ÜRÜNLER tablosundan doğru ürünü bulup cariye eklemek istiyorum.Sorgum şu
var s = from u in db.MontajUruns join y in UrunKutu.ToList() on u.UrunMarkasi equals y.UrunAd where y.ReferansUrunAd == dataGridView1.Rows[i].Cells[UrunBilgisi].Value.ToString() select new { u, y }; int MontajUrunID= s.ToList()[0].u.MontajUrunID;
Aldığım hata şu; bir sql sorgusu ile list birleştirilemez gibi saçma bir hata alıyorum.
kafayı yemek üzereyim. Sorgu çalışmadıkça ben kısır döngüye girmeye başladım.
HELP ME
-
sorunu dogru anladiysam zaten calistiramaman gayet normal. LINQ kullanmissin ve iki farkli tablo dedigin birisi db den geliyor digeri de bir liste/grid neyse. Bu ikisi farkli seyler. LINQ ile bu sekilde birlestirme yapamazsin hocam. Yapacagin is, iki listeyi de ayri ayri cekip daha sonra bellekte birlestirmen gerek.
-
evet sorunu doğru anlamışsınız.
iki farklı sorgu yaparak olaya geçici çözüm buldum ama
dediğiniz gibi db den gelen liste ile manuel olarak oluşturduğumuz listeyi
nasıl aynı sorguda kullanabiliriz?
-
Dbden gelen sorgunun sütun tiplerine göre bir sınıf oluştur.
Örneğin:
public class clsDB
{
public int ID {get;set;}
public string baslik {get;set;}
public string ozet {get;set;}
}
sonrasında
List<clsDB> liste = new List<clsDB>();
var dbListe = db.tablo_adi.tolist();
foreach (var item in dbListe)
{
liste.Add(new clsDB(){ID = item.ID, baslik = item.baslik, ozet = item.ozet});
}
sonrasında bu listeye diğer listeden gelen elemanları da eklersin. Umarım faydalı olur -
teşekkürler dediğin gibi yaptın sorun çözüldü.
-
hocam kusura bakma yeni gördüm mesajini :) (daha dogrusu görmüstüm ama yazmaya firsatim yoktu sonra da aklimdan cikmis)
kendine bir ana sinif secip, diger sinifi mapping ile baglayabilirsin..
https://www.infoworld.com/article/3192900/how-to-work-with-automapper-in-c.html
su tarz bi sey yapabilirsin mesela.
-
teşekkür ederim.