Hogyan lehet megirni Linq-ben..., ill a Linq használata saját adatforrások metódaiban
- Kiffer Ferenc -
|
|
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