PDA

View Full Version : خروجی query های LINQ از چه نوعی هستند؟



orca13
شنبه 26 بهمن 1392, 14:29 عصر
سلام،

قبلا من از معماری 3 لایه استفاده میکردم و وقتی در لایه DAL یه تابع برای SELECT مینوشتم، نوع بازگشتی اون رو SqlDataReader تعریف میکردم، بعد در لایه BLL که تابعی برای فراخوانی اون تابع SELECT مینوشتم، خروجی رو DataTable میزاشتم و تو لایه UI، دیتا سورس (مثلا) GridView رو مساوی با همین تابع (که خروجیش از نوع DataTable) بود قرار میدادم و مشکلی نبود.

اما حالا دارم از EF و LINQ استفاده میکنم (بازم همون 3 لایه)، میخواستم نتیجه query ای که با LINQ نوشته شده بود رو تبدیل به DataTable بکنم که بتونم در GridView نمایش بدم نتیجه رو (مثل ستاریوی بالا) که خطا داشت. الان تبدیل به نوع Array میکنم و همین نوع Array رو به گرید وصل میکنم.

میخواستم ببینم که ایا راه حل اینه یا راهه بهتری هم هست؟

ممنون

Majid.Stu66
شنبه 26 بهمن 1392, 16:09 عصر
با سلام
دوست عزیز شما نتیجه کوئری رو می تونی بصورت مستقیم به GridView نسبت بدی .


gridview1.datasource=queryresult;
gridview1.databind();

orca13
شنبه 26 بهمن 1392, 16:40 عصر
ممنون، میدونم، اما چون دارم به صورت 3 لایه مینویسم، مجبورم که خروجی query رو به لایه بالاتر پاس بدم، الان دارم به صورت Array پاس میدم که اصلا جالب نیست!
چون Array رو میشه مستقیم به دیتا سورس گرید وصل کرد، اما مستقیم نمیشه به فیلدها (یعنی خونه های Array) دسترسی داشته باشم.

EnKamran
یک شنبه 27 بهمن 1392, 01:50 صبح
نتیجه شما یک لیست هست البته به کوئری هم داره، مثلا :

public List<MyEntity> GetEntities(){
var entitieslist = (from n in ctx.TableName select n).ToList();
return entitieslist;
}
// Or
public MyEntitie GetEntity(int id)
{
var entity = (from n in ctx.TableName where n.ID == id select n).FirstOrDefault();
return entity;
}

تو مورد اول یک لیست برمیگرده و دومی یک موجودیت

fakhravari
یک شنبه 27 بهمن 1392, 10:07 صبح
خروجی هر پراپرتی مشخص میکنه، بعد استفاده