PDA

View Full Version : سوال: LINQ چیست؟



hamidreza20
سه شنبه 11 اسفند 1388, 15:21 عصر
سلام دوستان عزیز

کسی می تونه در مورد LINQ به طور کلی توضیح بده و بگه چه کاربردی داره؟

ممنون..
التماس دعا...

FastCode
سه شنبه 11 اسفند 1388, 15:46 عصر
LInQ یا Language Integrated Query زبان گزارشگیری Dynamic ارائه شده توسط مایکروسافت دات نت هست که برای گزارشگیری از IEnumerable ها استفاده میشه.و با اون میشه از تمامی امکانات دات نت بصورت منسجم استفاده کرد.
خواص:
{استفاده از متود های سورت و سرچ
استفاده آسان از لامبدا اکسپرشنز
استفاده از دستور where برای فیلتر کردن
افزایش سرعت کد نویسی
امکان استفاده از select های تو در تو}== تقریبا sql رو یکم قاطی کردن
البته استفاده از اون عواقب بدی هم داره که عبارت اند از:
افزایش سربار cpu منظورمO ی الگوریتم نیست.
انواع بازگشتی عجیب(که نمیتوان به راحتی به متود ها پاس داد)
تولید الگوریتم های نامناسب در بعضی مواقع(که می توان با جا به جا کردن دستورات مانع اونها شد)
تولید کد های غیر قایل خواندن
محاسبه ی دوباره ی مقادیر وقتی نیاز به این کار نیست.(البته در بعضی مواقع این کار با لامدا حل میشه ولی باید در نظر داشت که لامبدا چیز زیاد سریعی نیست)

توضیحات کاملتر در ویکیپدیا
http://en.wikipedia.org/wiki/Language_Integrated_Query

r00tkit
سه شنبه 11 اسفند 1388, 15:57 عصر
Language Integrated Query زبان گزارشگیری Dynamic ارائه شده توسط مایکروسافت دات نت هست که برای گزارشگیری از IEnumerable ها استفاده میشه.و با اون میشه از تمامی امکانات دات نت بصورت منسجم استفاده کرد.
....


این ها برداشت شخصی بوده و فاقد ارزش فنی

http://en.wikipedia.org/wiki/Linq

FastCode
سه شنبه 11 اسفند 1388, 16:08 عصر
این ها برداشت شخصی بوده و فاقد ارزش فنی
درسته ولی من این ها رو به چشم خودم دیدم.
در ضمن می دونم خلاف حرف من قابل اثبات هست, ولی مثلا" IQueryable یک اینترفیس که اگر کسی بتونه اون رو ایمپلمنت کنه من خودم رو میکشم.
منظورم از منسجم این بود که شما میتونید همه چیز رو توی یه خط بنویسید و کسی هم جرات نمیکنه به شما چیزی بگه.چون LInQ ذاتا" چیز شلوغ و به هم ریخته ای رو به برنامه نویس تحویل میده.(این هم با تجربه اثبات میشه.).
ارائه شده توسط مایکروسافت دات نت هم نمیتونه این منظور رو بزسونه که هسته ی LInQ داتنته.(native طراحی شده.).
گزارشگیری, واقعا" چند درصد افراد برای کار های void از LinQ استفاده میکنن.(اون هایی هم که میکنن در 99% مواقع برای تضمین یه مقدار رو برمیگردونن یا بعدا" اون رو تبدیل به plainCode میکنن)
در ضمن این بار خودم تذکر میدم که اینها برداشت شخصیه.
http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

kiosksoft
سه شنبه 11 اسفند 1388, 20:05 عصر
سلام دوستان عزیز

کسی می تونه در مورد LINQ به طور کلی توضیح بده و بگه چه کاربردی داره؟

ممنون..
التماس دعا...


دوست عزیز

LINQ زبانی استاندارد برای پرس و جوی داده ها میباشد ، در واقع زبانی شبیه SQL با این تفاوت با این زبان (linq) میتوان برنامه ای یکپارچه نوشت که همه زبانهای دات نت عمل کند و مهمتر از همه با تمام دیتابیس هایی نطیر sql server و oracle کار کند.

Vahid_moghaddam
سه شنبه 11 اسفند 1388, 20:33 عصر
در پروژه ای که اخیرا کار می کردم خیلی زیاد از LINQ استفاده کردم و کاملا کار من رو راه انداخت. تنها مساله ای که باهاش مشکل داشتم، سرعت پایین تر LINQ ، البته نه در همه موراد، نسبت به حلقه For و Foreach بود. به همین دلیل پیشنهاد من اینه که برای جستجوهای ساده از حلقه ها استفاده بشه. اگه برنامه نویس بدونه دقیقا از LINQ چی می خواد به مشکلی بر نمی خوره. وقتی با آگاهی از join، group by و ... استفاده بشه، سردرگمی پیش نمی یاد. در مورد تکرار محاسبات هم خود برنامه نویس می تونه تصمیم بگیره. مثلا فرض کنید من می خوام از لیست ژنریک اعداد زوج رو بیرون بکشم. اگه به روش زیر عمل کنم، محاسبات تکرار می شن:



var v= from n in MyList
where n%2==0
select n;
اما می تونم به شکل زیر عمل کنم:



List<int> v=(from n in MyList
where n%2==0
select n).ToList();

misoft.ir
سه شنبه 11 اسفند 1388, 20:36 عصر
سلام
زبان پرس و جوی ساخت یافته ای که با اون میشه با داده هایی از نوع آرایه ها ، دیتابیس ، فایل های Xml و DataSet کار کرد.

به طور خلاصه اینکه امروزه یه برنامه نویس نیاز داره که با این چهار نوع داده کار کنه که هر کدوم از این تکنولوژی ها نیازمند صرف زمان برای آموزش هستند . دلیلش هم ساختار متفاوت هر کدوم از این تکنولوژی هاست.
تکنولوژی لینک رویکرد جدیدی برای کار با این داده ها به صورت مشترکه به این معنی که با فراگیری Linq مشکلتون در استفاده از نوع های ذکر شده مرتفع میشه

ترجمه بنده خیلی خوب نیست برای جا افتادن مطلب به کتاب زیر رجوع کنید.
Wrox C# 2008 Programmer’s Reference

Mahdi.Kiani
سه شنبه 11 اسفند 1388, 22:15 عصر
سلام
وافعا تعجب می کنم که چطور دوستان با 2-3 خط سعی می کنند این موضوع را موشکافی کنند در جایی که کتاب های چند صد صفحه ای برای این موضوع نوشته شده است!.بهترین جوابی که به این دوستمون می شه داد، google و کتاب هایی است که در این باره نوشته شده./
موفق باشید

hamidreza20
چهارشنبه 12 اسفند 1388, 06:24 صبح
از همه عزیزانی که جواب دادند ممنونم

مخصوصا مدیر محترم بخش ، البته تا حدی متوجه شدم ولی هنوز مساله کمی مبهم می باشد که باید کمی تحقیق کنم و نحوه استفاده از اون رو یاد بگیرم .

فقط اگه کسی از دوستان مثال عملی در این زمینه داره لطف کنه بزاره.

متشکر

التماس دعا...

Vahid_moghaddam
چهارشنبه 12 اسفند 1388, 10:44 صبح
از همه عزیزانی که جواب دادند ممنونم

مخصوصا مدیر محترم بخش ، البته تا حدی متوجه شدم ولی هنوز مساله کمی مبهم می باشد که باید کمی تحقیق کنم و نحوه استفاده از اون رو یاد بگیرم .

فقط اگه کسی از دوستان مثال عملی در این زمینه داره لطف کنه بزاره.

متشکر

التماس دعا...

http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

Vahid_moghaddam
چهارشنبه 12 اسفند 1388, 13:53 عصر
این لینک رو که من گزاشته بودم.:لبخند:
ببخشید. ندیده بودم!:لبخند:

relax_cp
پنج شنبه 24 شهریور 1390, 12:43 عصر
سلام به مدیریت و تمامی دوستانی که زحمت میکشند
یک سوال خیلی خیلی مهم دارم که مطمئنم می تونید کمکم کنید.
ارتباط با دیتابیس با استفاده از LINQ خیلی راحت و بسیار سریع هست و این موضوع رو همه میدونیم. سوالی که دارم اینه که وقتی ما از دیتابیس اس کیو ال استفاده میکنیم مشکلی در این ضمینه ندارم و با یک DataContextارتباط با بانک رو برقرار میکنم حالا سوال من این هست که وقتی دیتابیسم اوراکل میشه چطور میشه از LINQ استفاده کرد؟ من امتحان کردم وقتی که جدولی رو از server explorer که دیتابیسم رو توش تعریف کردم به داخل DataContext با عمل درگ میکشیم میگه این عمل ممکن نیست و کاملا این پیامش منطقی هست چونکه این دیتاکانتکس ارتباط بین اس کیو ال و لینک هست. حالا میخوام بدونم که ارتباط بین جداول بانک اوراکلم و برنامه رو چطور میتونم داشته باشم البته با لینک؟