samadblaj
چهارشنبه 11 بهمن 1391, 16:02 عصر
به نام خدا ؛
سلام دوستان عزیز مدتی هست دارم از تکنولوژِی Linq استفاده میکنم...که واقعا از کارایی ، سهولت و سرعتش خیلی خوشم اومد بحث های زیادی در رابطه با این تکنولوژی ها شده و منابع زیادی برای استفاده از این تکنولوزی هست...
به نوبه خودم و قدردانی از دوستان برنامه نویس سعی کردم قسمتی از کد ها رو جمع و جور کنم و در این تاپیک قرار بدم امیدوارم بتونه کمکون کنه...
فقط عذر خواهی میکنم که نمیتونم از ابتدا براتون توضیح بدم چون منابع برای مقدمه زیاد هست
در پایان کتابی pdf پیوست کردم که از دوباره گویی این قسمت اجتناب میکنم
تمامی کد ها رو از تجربیات و یا کتابخونه Microsoft در تاپیک قرار میدم خوشحال میشم مشکلاتم و نواقص رو بهم گوش زد کنید...
به صورت تیکه تیکه کد ها رو قرار میدم و توضیح مختصری از کار هر کد فقط دوستان اگه در قسمتی از کار مشکل داشتد بهم اطلاع بدن تا کمکشون کنم...
و به زودی پیش میریم به سمت Entity Frameworke نسل جدید linq که کدها فرق چندانی با هم ندارند...
فقط خواهشا در این تاپیک پست انتقاد ، نظر پیشنهاد ، تشکر و سوال نزنید در صورت سوال تاپیک جدید یا از طریق پیغام خصوصی در خدمتم :تشویق:
در ابتدا توجه داشته باشید که کد های موجود در کلاس زیر است :
using System.Linq;
بدست آوردن کوچکترین عدد min
int[] numbers = { 5, 4,0, 1, 3, 9, 8, 6, 7, 2 };
int minNum = numbers.Min();
MessageBox.Show(minNum .ToString());
توضیح این کد : ابتدا یک آرایه از نوع اعداد صحیح تعریف کردیم و کوچکترین مقدار رو بدست آوردیم.
min متدی از کلاس linq هستش...
نکته مهم : برای سهولت نمایش مقدار از آرایه استفاده کردیم جای آرایه میشه مقداری یک جدول باشه...
بفرمایید به سادگی میتونید روی جدولتون ستون grade بزرگترین/گوچکترین نمره رو بدست بیارید
DataBaseEntities db=new DataBaseEntities ();
var queryMax = db.Table1.Min (d=>d.grade );
MessageBox.Show (queryMax.ToString ());
var queryMax = db.Table1.Max (d => d.grade); // "=>" این عبارت لامبادا هست که از توجه بالایی برخورداره
MessageBox.Show(queryMax.ToString());
مثال بالا فقط برای این بود که هم بر روی شی و دیتا به سادگی بتونید اطلاعات رو واکشی کنید...
نمایش تمامی مقادیر آریه (دوستان عزیز همونظور که گفتم مثل مثال بالا میتونید جای آرایه ستون های جدول رو قرار بدید که در قسمت های بعدی بیشتر روش تمرکز میکنیم )
string[] tools = { "samad", "reza", "moein"};
var list = from t in tools select t;
StringBuilder sb = new StringBuilder();
foreach (string s in list)
{
sb.Append(s + Environment.NewLine);
}
MessageBox.Show(sb.ToString());
نمایش تمامی حروفی که با s شروع شدن.
string[] str1 = { "samad", "ali", "saman", "reza", "sahand" };
var list =
from b in str1
where b.StartsWith("s")
select b;
StringBuilder sb = new StringBuilder();
foreach (string s in list)
{
sb.Append(s + Environment.NewLine);
}
MessageBox.Show(sb.ToString());
مثال دیگه : توی تکست ها میگرده و مقدار رو پیدا و نمایش میده.( فرضا برای جستجو یک کلمه در DataGridView) ببینید textbox کجا قرار گرفته ! فقط جای آرایه همه چیز میتونه باشه این فقط برای درک بهتر شماست....
string [] str1 ={textBox1 .Text ,textBox2 .Text ,textBox3 .Text };
var lin =
from s in str1
where s.StartsWith("s")
select s;
StringBuilder sb = new StringBuilder();
foreach (var l in lin)
{
sb.Append(l + Environment.NewLine);
}
MessageBox.Show(sb.ToString());
اولین کلمه ای که با کارکتر o شروع شده رو نمایش میدهد.
string[] strings = { "zero", "one", "two", "three"};
string startsWithO = strings.First(s => s[0] == 'o');
MessageBox.Show(startsWithO);
توی آرایه جستجو میکنه.
string [] str1={"samad","ali","reza"};
var listin=from s in str1 where s =="samad" select s;
StringBuilder sb=new StringBuilder ();
foreach (string s in listin)
{
sb.Append(s + Environment.NewLine);
}
MessageBox.Show(sb.ToString());
مرتب سازی
string[] str = { "samad", "ali", "reza" };
var list = from s in str orderby s ascending select s;
StringBuilder sb = new StringBuilder();
foreach (string s in list)
{
sb.Append(s + Environment.NewLine);
}
MessageBox.Show(sb.ToString());
نمایش اعداد کوچکتر از 5
int[] i = { 1, 5, 6, 2, 9, 1, 4 };
var news = from j in i
where j < 5
select j;
foreach (var m in news )
{
MessageBox.Show(m.ToString());
}
اضافه کردن یک رقم به اعداد موجود درآریه ها:
int[] number = { 5, 10, 7, 4, 3 };
var lin =
from n in number
select n + 1;
foreach (var i in lin)
{
MessageBox.Show(i.ToString());
}
نمایش دو آریه ی اول (خروجی : 5,6 )
int[] number = { 5, 6, 4, 2, 9 };
var lin = number.Take(2);
foreach (var k in lin)
{
MessageBox.Show(k.ToString());
}
دستور take() یک گزینه مناسب برای ساخت صفحات به صورت Paging هست...
نمایش از ایندکس آرایه مشخص (خروجی : 4,2,9 )
int[] number = { 5, 6, 4, 2, 9 };
var lin = number.Skip(2);
foreach (var k in lin)
{
MessageBox.Show(k.ToString());
}
تا قبل از مقدار مشخص (6)- آرایه ها رو نمایش میدهد
int[] number = { 5,1, 6, 4, 2, 9 };
var lin = number.TakeWhile(r => r < 6);
foreach (var k in lin)
{
MessageBox.Show(k.ToString());
}
بدست آرودن مجموع اعداد
int[] number = { 5, 8, 4, 9, 10 };
double sumlin = number.Sum();
MessageBox.Show(sumlin.ToString());
بدست آرودن مجموع کارکتر ها
string[] words = { "samad", "reza", "ali" };
double totalChars = words.Sum(w => w.Length);
MessageBox.Show(totalChars.ToString());
میانگین...
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
double averageNum = numbers.Average();
MessageBox.Show(averageNum.ToString());
مرتب سازی صعودی :
var sortedWords =
from w in words
orderby w
select w;
مرتب سازی بر اساس مقدار طول کلمه
var sortedWords =
from w in words
orderby w.Length
select w;
مرتب سازی بر اساس مقدار طول کلمه
var sortedWords =
from w in words
orderby w.Length
select w;
یا
var sortedDigits =
from d in digits
orderby d.Length, d
select d;
مرتب سازی نزولی اعشار (بیشترین سقف اعتبار)
double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
var sortedDoubles =
from d in doubles
orderby d descending
select d;
foreach (var d in sortedDoubles)
{
Console.WriteLine(d);
}
تکرار کارکتر ( 7 را 10 بار تکرار می کند)
var numbers = Enumerable.Repeat(7, 10);
foreach (var n in numbers)
{
Console.WriteLine(n);
}
نمایش ایندکس مشخص :
int[] numbers = { 1, 4, 1, 3, 11, 9, 6, 7, 2, 0 };
int fourthLowNum = (
from n in numbers
where n > 5
select n)
.ElementAt(1);
Console.WriteLine( fourthLowNum);
Console.ReadLine();
اینم به عنوان پاورقی قرار میدم تا قسمت هایی رو که براتون گنگ هست رو بتونید بر طرف کنید... :چشمک:
Skip = به تعدادی مشخص از عنصر ها صرفه نظر می کنید.
Take = تعدادی از عناصر رو به عنوان خروجی بر می گردوند.
Select = عناصری رو که قرار است برگردونده شود رو بر می گرداند.
Contains = وجود عنصر مورد نظر رو بررسی میکند (بهترین گزینه برای جست و جو هستش :چشمک:)
Where = به شکلی شبیه به IF هست عناصر رو فیلتر میکند.
اگه دوستان دیگه هم منابع مناسبی برای آموزش دارند قرار بدن تا استفاده کنیم حتی یک تیکه کد !
کتاب پیوستی هم مقدمای بر استفاده از Linq هستش حتما مطالعه کنید.
سعی کنید خط به خط کد ها رو تست و تحلیل کنید کلید F1 هم فراموش نشه...
یا علی.
سلام دوستان عزیز مدتی هست دارم از تکنولوژِی Linq استفاده میکنم...که واقعا از کارایی ، سهولت و سرعتش خیلی خوشم اومد بحث های زیادی در رابطه با این تکنولوژی ها شده و منابع زیادی برای استفاده از این تکنولوزی هست...
به نوبه خودم و قدردانی از دوستان برنامه نویس سعی کردم قسمتی از کد ها رو جمع و جور کنم و در این تاپیک قرار بدم امیدوارم بتونه کمکون کنه...
فقط عذر خواهی میکنم که نمیتونم از ابتدا براتون توضیح بدم چون منابع برای مقدمه زیاد هست
در پایان کتابی pdf پیوست کردم که از دوباره گویی این قسمت اجتناب میکنم
تمامی کد ها رو از تجربیات و یا کتابخونه Microsoft در تاپیک قرار میدم خوشحال میشم مشکلاتم و نواقص رو بهم گوش زد کنید...
به صورت تیکه تیکه کد ها رو قرار میدم و توضیح مختصری از کار هر کد فقط دوستان اگه در قسمتی از کار مشکل داشتد بهم اطلاع بدن تا کمکشون کنم...
و به زودی پیش میریم به سمت Entity Frameworke نسل جدید linq که کدها فرق چندانی با هم ندارند...
فقط خواهشا در این تاپیک پست انتقاد ، نظر پیشنهاد ، تشکر و سوال نزنید در صورت سوال تاپیک جدید یا از طریق پیغام خصوصی در خدمتم :تشویق:
در ابتدا توجه داشته باشید که کد های موجود در کلاس زیر است :
using System.Linq;
بدست آوردن کوچکترین عدد min
int[] numbers = { 5, 4,0, 1, 3, 9, 8, 6, 7, 2 };
int minNum = numbers.Min();
MessageBox.Show(minNum .ToString());
توضیح این کد : ابتدا یک آرایه از نوع اعداد صحیح تعریف کردیم و کوچکترین مقدار رو بدست آوردیم.
min متدی از کلاس linq هستش...
نکته مهم : برای سهولت نمایش مقدار از آرایه استفاده کردیم جای آرایه میشه مقداری یک جدول باشه...
بفرمایید به سادگی میتونید روی جدولتون ستون grade بزرگترین/گوچکترین نمره رو بدست بیارید
DataBaseEntities db=new DataBaseEntities ();
var queryMax = db.Table1.Min (d=>d.grade );
MessageBox.Show (queryMax.ToString ());
var queryMax = db.Table1.Max (d => d.grade); // "=>" این عبارت لامبادا هست که از توجه بالایی برخورداره
MessageBox.Show(queryMax.ToString());
مثال بالا فقط برای این بود که هم بر روی شی و دیتا به سادگی بتونید اطلاعات رو واکشی کنید...
نمایش تمامی مقادیر آریه (دوستان عزیز همونظور که گفتم مثل مثال بالا میتونید جای آرایه ستون های جدول رو قرار بدید که در قسمت های بعدی بیشتر روش تمرکز میکنیم )
string[] tools = { "samad", "reza", "moein"};
var list = from t in tools select t;
StringBuilder sb = new StringBuilder();
foreach (string s in list)
{
sb.Append(s + Environment.NewLine);
}
MessageBox.Show(sb.ToString());
نمایش تمامی حروفی که با s شروع شدن.
string[] str1 = { "samad", "ali", "saman", "reza", "sahand" };
var list =
from b in str1
where b.StartsWith("s")
select b;
StringBuilder sb = new StringBuilder();
foreach (string s in list)
{
sb.Append(s + Environment.NewLine);
}
MessageBox.Show(sb.ToString());
مثال دیگه : توی تکست ها میگرده و مقدار رو پیدا و نمایش میده.( فرضا برای جستجو یک کلمه در DataGridView) ببینید textbox کجا قرار گرفته ! فقط جای آرایه همه چیز میتونه باشه این فقط برای درک بهتر شماست....
string [] str1 ={textBox1 .Text ,textBox2 .Text ,textBox3 .Text };
var lin =
from s in str1
where s.StartsWith("s")
select s;
StringBuilder sb = new StringBuilder();
foreach (var l in lin)
{
sb.Append(l + Environment.NewLine);
}
MessageBox.Show(sb.ToString());
اولین کلمه ای که با کارکتر o شروع شده رو نمایش میدهد.
string[] strings = { "zero", "one", "two", "three"};
string startsWithO = strings.First(s => s[0] == 'o');
MessageBox.Show(startsWithO);
توی آرایه جستجو میکنه.
string [] str1={"samad","ali","reza"};
var listin=from s in str1 where s =="samad" select s;
StringBuilder sb=new StringBuilder ();
foreach (string s in listin)
{
sb.Append(s + Environment.NewLine);
}
MessageBox.Show(sb.ToString());
مرتب سازی
string[] str = { "samad", "ali", "reza" };
var list = from s in str orderby s ascending select s;
StringBuilder sb = new StringBuilder();
foreach (string s in list)
{
sb.Append(s + Environment.NewLine);
}
MessageBox.Show(sb.ToString());
نمایش اعداد کوچکتر از 5
int[] i = { 1, 5, 6, 2, 9, 1, 4 };
var news = from j in i
where j < 5
select j;
foreach (var m in news )
{
MessageBox.Show(m.ToString());
}
اضافه کردن یک رقم به اعداد موجود درآریه ها:
int[] number = { 5, 10, 7, 4, 3 };
var lin =
from n in number
select n + 1;
foreach (var i in lin)
{
MessageBox.Show(i.ToString());
}
نمایش دو آریه ی اول (خروجی : 5,6 )
int[] number = { 5, 6, 4, 2, 9 };
var lin = number.Take(2);
foreach (var k in lin)
{
MessageBox.Show(k.ToString());
}
دستور take() یک گزینه مناسب برای ساخت صفحات به صورت Paging هست...
نمایش از ایندکس آرایه مشخص (خروجی : 4,2,9 )
int[] number = { 5, 6, 4, 2, 9 };
var lin = number.Skip(2);
foreach (var k in lin)
{
MessageBox.Show(k.ToString());
}
تا قبل از مقدار مشخص (6)- آرایه ها رو نمایش میدهد
int[] number = { 5,1, 6, 4, 2, 9 };
var lin = number.TakeWhile(r => r < 6);
foreach (var k in lin)
{
MessageBox.Show(k.ToString());
}
بدست آرودن مجموع اعداد
int[] number = { 5, 8, 4, 9, 10 };
double sumlin = number.Sum();
MessageBox.Show(sumlin.ToString());
بدست آرودن مجموع کارکتر ها
string[] words = { "samad", "reza", "ali" };
double totalChars = words.Sum(w => w.Length);
MessageBox.Show(totalChars.ToString());
میانگین...
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
double averageNum = numbers.Average();
MessageBox.Show(averageNum.ToString());
مرتب سازی صعودی :
var sortedWords =
from w in words
orderby w
select w;
مرتب سازی بر اساس مقدار طول کلمه
var sortedWords =
from w in words
orderby w.Length
select w;
مرتب سازی بر اساس مقدار طول کلمه
var sortedWords =
from w in words
orderby w.Length
select w;
یا
var sortedDigits =
from d in digits
orderby d.Length, d
select d;
مرتب سازی نزولی اعشار (بیشترین سقف اعتبار)
double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
var sortedDoubles =
from d in doubles
orderby d descending
select d;
foreach (var d in sortedDoubles)
{
Console.WriteLine(d);
}
تکرار کارکتر ( 7 را 10 بار تکرار می کند)
var numbers = Enumerable.Repeat(7, 10);
foreach (var n in numbers)
{
Console.WriteLine(n);
}
نمایش ایندکس مشخص :
int[] numbers = { 1, 4, 1, 3, 11, 9, 6, 7, 2, 0 };
int fourthLowNum = (
from n in numbers
where n > 5
select n)
.ElementAt(1);
Console.WriteLine( fourthLowNum);
Console.ReadLine();
اینم به عنوان پاورقی قرار میدم تا قسمت هایی رو که براتون گنگ هست رو بتونید بر طرف کنید... :چشمک:
Skip = به تعدادی مشخص از عنصر ها صرفه نظر می کنید.
Take = تعدادی از عناصر رو به عنوان خروجی بر می گردوند.
Select = عناصری رو که قرار است برگردونده شود رو بر می گرداند.
Contains = وجود عنصر مورد نظر رو بررسی میکند (بهترین گزینه برای جست و جو هستش :چشمک:)
Where = به شکلی شبیه به IF هست عناصر رو فیلتر میکند.
اگه دوستان دیگه هم منابع مناسبی برای آموزش دارند قرار بدن تا استفاده کنیم حتی یک تیکه کد !
کتاب پیوستی هم مقدمای بر استفاده از Linq هستش حتما مطالعه کنید.
سعی کنید خط به خط کد ها رو تست و تحلیل کنید کلید F1 هم فراموش نشه...
یا علی.