values multiple ejemplos c# linq-to-sql list

c# - multiple - La secuencia local no se puede usar en implementaciones LINQ to SQL de operadores de consultas, excepto el operador Contiene



linq where list contains (3)

Debes forzar a LINQ a evaluar la segunda unión localmente. Puedes hacerlo:

var urunMD = (from urun in db.TBLP1URUNs join kategori in db.TBLP1URUNKATEGORIs on urun.KATEGORIID equals kategori.ID).AsEnumerable() .Join( [...] )

Recibo este error en una página web, en un componente de Microsoft Report Viewer:

Se ha producido un error al procesar el informe! La secuencia local no se puede usar en implementaciones LINQ to SQL de operadores de consultas, excepto el operador Contiene.

Mi código:

public static IEnumerable GetUrunMiktarliDetayli() { Baglanti(); List<StokEnvanteriSatiri> urunListesi = new List<StokEnvanteriSatiri>(); urunListesi = GetUrunListesiDoldur(); var urunStok = from urunS in urunListesi select new { urunS.AcilisMiktari, urunS.MevcutMiktar, urunS.UrunNo }; var urunMD = from urun in db.TBLP1URUNs join kategori in db.TBLP1URUNKATEGORIs on urun.KATEGORIID equals kategori.ID join a in urunStok on urun.ID equals a.UrunNo select new { DIGERGIRISLER = a.AcilisMiktari, urun.URUNADI, urun.URUNACIKLAMA, kategori.TREENAME, urun.STOKTURU, urun.MARKA, urun.MODEL, urun.URUNTIPI, urun.URUNDURUM, urun.KRITIKSTOKMIKTARI, urun.DEPOADI, urun.YER, urun.RAF, urun.RAFOMRU, KDVDAHILMI = urun.KDVDAHILMI==1 ? "EVET":"HAYIR", urun.KDVORANI, urun.SATFIYAT1, urun.SATFIYAT1BIRIM, urun.TEDFIYAT1, urun.TEDFIYAT1BIRIM, urun.HIZMETYENSURYIL, urun.HIZMETYENSURAY, urun.SATILANMIKTAR, urun.IADEEDILENMIKTAR, urun.KULLANILANMIKTAR, urun.ZAYIMIKTAR, urun.KONSINYECIKISMIKTAR, urun.DIGERCIKISLAR, urun.TEDARIKMIKTAR, urun.IADEALINANMIKTAR, urun.KONSINYEGIRISMIKTAR, urun.EN, urun.BOY, urun.YUKSEKLIK, urun.AGIRLIK, urun.BOYUTAGIRLIGI, urun.URUNKAYITTARIHI, urun.GARANTISURESIBITIS, urun.SONGUNCELLEMETARIHI, urun.YENI, urun.TESLIMATSURESI, urun.TEDARIKCISTOKMIKTAR, } ; return urunMD; } public class StokEnvanteriSatiri { private string urunNo; private string urunAdi; private int acilisMiktari; private int toplamTedarikMiktari; private int toplamSatisMiktari; private int mevcutMiktar; private decimal satisFiyati; private decimal toplamTutar; private string paraBirimi; public string UrunNo { get { return urunNo; } set { urunNo = value; } } public string UrunAdi { get { return urunAdi; } set { urunAdi = value; } } public int AcilisMiktari { get { return acilisMiktari; } set { acilisMiktari = value;} } public int ToplamTedarikMiktari { get { return toplamTedarikMiktari; } set { toplamTedarikMiktari = value; } } public int ToplamSatisMiktari { get { return toplamSatisMiktari; } set { toplamSatisMiktari = value; } } public int MevcutMiktar { get { return mevcutMiktar; } set { mevcutMiktar = value; } } public decimal SatisFiyati { get { return satisFiyati; } set { satisFiyati = value; } } public decimal ToplamTutar { get { return toplamTutar; } set { toplamTutar = value; } } public string ParaBirimi { get { return paraBirimi; } set { paraBirimi = value; } } }

Este método GetUrunListesiDoldur() básicamente devuelve una List<StokEnvanteriSatiri> de StokEnvanterSatiri , sé que el problema es que estoy intentando unirme a una lista en memoria con una tabla SQL.

¿Hay alguna forma de manejar esto?


Reescribe tu consulta urunMD para que se ejecute en dos partes. Use un operador Contains para filtrar los registros iniciales en TBLP1URUNs y luego solo devuelva los datos de la base de datos. A continuación, utilice una consulta separada LINQ-to-Objects para combinar los datos de la base de datos de TBLP1URUNs con los datos en memoria en urunStok .


Básicamente revertí la join y funcionó

var urunMD = from urunStokbilgileri in urunStok join urun in db.TBLP1URUNs on urunStokbilgileri.UrunNo equals urun.ID join kategori in db.TBLP1URUNKATEGORIs on urun.KATEGORIID equals kategori.ID ......