Skip Navigation Links
 Tudástár cikkek 
 Konferenciaanyagok 
 Dokumentumok 
 NetAcademia Blog 

NetAcademia Blog

IE8 Accelerator Tudástár kereséshez   Kereső szolgáltatás Tudástár kereséshez
 


Hogyan lehet megirni Linq-ben..., ill a Linq használata saját adatforrások metódaiban
- Kiffer Ferenc -

 Feliratkozás Rss feed 2009. 11. 25. 15:32
Kedves Tocsi!

Az egyik előadás végén mondtad, hogy próbáljuk megírni az SQLDataSource-ban lévő lekérdezéseket Linq és ObjectDataSource segítségével.

A elkészítés során néhány problémába ütköztem.
1) Pl. hogyan lehet az alábbi lekérdezést megvalósítani:

kód másolása
select distinct left(productname, 1) as letter from dbo.product


Az egyik distinct nélküli próbálkozásom az alábbi volt:
kód másolása
public class SajatDB
{
    public NorthwindDataContext dc 
    {
        get { return new NorthwindDataContext(); } 
    }
}
[DataObject]
public class SajatTermekBetuk: SajatDB
{
    [DataObjectMethod(DataObjectMethodType.Select, true)]
    public IEnumerable<String> SelectProductLetters()
    {
        var betuk = from t in dc.Products
                    select t.ProductName.Substring(1, 1);

        return betuk; 
    }
}


De ez ObjectDataSource-ban felhasználva, amikor a DataList-ben a HyperLink-nél probáltam DataBindingolni, akkor nem hozta fel a mezőt: csak (Unbound) és a Length mezőket lehetett kiválasztani.


2) Másrészt hogyan lehet egy tábla bizonyos oszlopait megadni egy Linq lekérdezésben, azaz nem kell az összes oszlop, persze egy saját adatforrás lekérdező eljárásában, ahol meg kell adni az eljárás fejlécében a lista típusát?

Próbálkoztam a select new {...} megoldással, de ezzel nem jutottam eredményre.


3. A saját adatforrások készítésénél szükség van a "LinQ to SQL" itemre, hogy hozzáférjünk az adatbázis tábláihoz?


4. Egy saját adatforrás lekérdezését lehet-e, ill érdemes-e virtuális eljárásba irni, azaz ős elvégzi a teljes lekérdezést, a leszármazottban pedig szűkített lekérdezést végzek:


kód másolása
public class SajatDB
{
    public NorthwindDataContext dc 
    {
        get { return new NorthwindDataContext(); } 
    }
}

[DataObject]
public class SajatKategoriak: SajatDB
{
    public virtual IEnumerable<Category> GetSelectCatagories(int SelCategory)
    { 
        var kategoriak = from k in dc.Categories
                         select k;

        return kategoriak;
    }

    [DataObjectMethod(DataObjectMethodType.Select, true)]
    public IEnumerable<Category> SelectCategories(int SelCategory)
    { 
        return GetSelectCatagories(SelCategory).ToList();
    }
}

public class SajatKategoria: SajatKategoriak
{
    public override IEnumerable<Category> GetSelectCatagories(int SelCategory)
    {
        return base.GetSelectCatagories(0).Where(k => k.CategoryID == SelCategory);
    }
}



Előre is köszönettel

ERT


Bejelentkezve hozzá is szólhat

Cím: 1077 Budapest, Kéthly Anna tér 1.
Telefon: (06 1) 472-1214
Fax: (06 1) 472-1215
Nyitvatartás, ügyfélszolgálat: 830-1630
Regisztrációs szám: 01-0707-04
Fat akkreditációs lajstromszám: AL-1680
Írjon nekünk!
Tudástár PPT-k Dokumentumok Blog Próbatesztek