صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 45

نام تاپیک: اگر علاقه ای به LINQ دارید وارد شوید

  1. #1
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    اگر علاقه ای به LINQ دارید وارد شوید

    سلام دوستان
    من خوئم چیز زیادی در باره LINQ نمی دانم و این تاپیک را گذاشتم تا بلکه دوستان تشویق شده و بیشتر به این موضوع بپردازند.
    نمونه کد زیر یک مثال بسیار ساده هست لطفا هر کس نمونه برنامه یا توضیحاتی اگر می تواند ارائه نماید .

    Dim numbers() As Integer = {0, 1, 2, 3, 4, 5, 6}
    ' Query creation.
    Dim evensQuery = From num In numbers _
    Where num Mod 2 = 0 _
    Select num
    ' Query execution.
    For Each number In evensQuery
    Console.Write(number & " ")
    MsgBox(number)
    Next

    End Sub


    کد بالا را در رویداد کلیک یک button بنویسید و نتیجه ان را ببینید.
    به یاد داشته باشید این فقط یک نمونه ساده است.

  2. #2
    کاربر دائمی آواتار s.k711
    تاریخ عضویت
    آبان 1386
    محل زندگی
    مشهد
    سن
    38
    پست
    164

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    [quote=mina.net;629116]سلام دوستان
    من خوئم چیز زیادی در باره LINQ نمی دانم و این تاپیک را گذاشتم تا بلکه دوستان تشویق شده و بیشتر به این موضوع بپردازند.
    نمونه کد زیر یک مثال بسیار ساده هست لطفا هر کس نمونه برنامه یا توضیحاتی اگر می تواند ارائه نماید .

    Dim numbers() As Integer = {0, 1, 2, 3, 4, 5, 6}
    ' Query creation.
    Dim evensQuery = From num In numbers _
    Where num Mod 2 = 0 _
    Select num
    ' Query execution.
    For Each number In evensQuery
    Console.Write(number & " ")
    MsgBox(number)
    Next

    End Sub


    کد بالا را در رویداد کلیک یک button بنویسید و نتیجه ان را ببینید.
    به یاد داشته باشید این فقط یک نمونه ساده است.[/quote]


    سلام دوست عزيز خيلي ممنون از كدتون. ميشه بگيد دقيقا اين كد چه كار مي كتد؟

  3. #3

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    ممنون از اینکه ای تاپیک رو ایجاد کردید،
    اگه میشه در مورد متغیر evensQuery توضیح بدین. این مقداری که گرفته چیه و به چه زبایه؟

  4. #4
    کاربر دائمی آواتار mostafaaa
    تاریخ عضویت
    دی 1386
    محل زندگی
    جزیره کیش
    پست
    723

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام
    البته من در مورد LINQ خودم تازه کارم و تجربه چندانی ندارم . ولی از اونجایی که SQL رو تقریبا خوب بلدم و با توجه به مشابهت های LINQ با SQL تا به حال در استفاده ازش مشکلی نداشتم.
    در هر صورت با اجازه دوستمون Mina.net در مورد کد بالا کمی توضیح میدم.
    خط اول که مشخص تعریف آرایه ای از اعداد که قرار کوئری ما بر روی این آرایه اعمال بشه.
    در خط دوم با کلمه کلیدی FROM یه واریابل از نوع OBject با نام num ایجاد میشه و با کلمه کلیدی IN مشخص میکنیم که کوئری مربوطه بر روی چه شیی انجام میشه که میتونه آرایه یا DataSet یا DataTable یا ... باشه. با کلمه کلید WHERE هم که کاملا مشخصه که شروط کوئریمون رو داریم تعریف میکنیم و مشکلی هم فکر نمیکنم باهاش داشته باشید. خط آخر هم وجود و عدم وجودش در خروجیمون توی این کو ئری تفاوتی ایجاد نمیکنه.
    در واقع کد زیر بدون استفاده از LINQ و مشابه کد دوستمونه. که خرو جیهاشون یکیه
            Dim numbers() As Integer = {0, 1, 2, 3, 4, 5, 6}
    For Each Num As Integer In numbers
    If Num Mod 2 = 0 Then MsgBox(Num)
    Next

  5. #5
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام
    از دوست خوبم mostafa تشکر می کنم که کارم را ساده تر نمودند
    دوستان همان طور که می دانید LINQ یک مبحث جدید می باشد و فکر می کنم فقط در 2008 انجام بشه البته مطمئن نیستم خواهش می کنم دوستانی که 2005 نصب دارند ازمایش کنند ونتیجه را اطلاع دهند اما یک کد جدید براتان می زارم که دیروز از msdn بیرون کشیدم

    'يک ارايه معرفي مي کند
    Dim numbers() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    ' اعدادي که زوج هستند را پيدا مي کند
    Dim evensQuery = From num In numbers Where num Mod 2 = 0 Select num
    ' اعداد زوج نمايش مي يابد
    For Each number In evensQuery
    MsgBox(number)
    Next
    ' اعداد زوج شناساي مي شود
    For Each number In evensQuery
    Console.Write(number & " ")
    Next
    MessageBox.Show(evensQuery.Any, "Any" & "اين تابع نشان مي دهد که مقداري وجود دارد يا نه")
    Try
    MessageBox.Show(evensQuery.Count, "Count" & "اين تابع تعداد را نشان مي دهد ")
    MessageBox.Show(evensQuery.Max, "Max" & "اين تابع بزرگترين را نشان مي دهد ")
    MessageBox.Show(evensQuery.Min, "Min" & "اين تابع کوچکترين را نشان مي دهد ")
    MessageBox.Show(evensQuery.Sum, "Sum" & "اين تابع مجموع را نشان مي دهد ")
    MessageBox.Show(evensQuery.Average, "Average" & "اين تابع ميانگين را نشان مي دهد ")
    MessageBox.Show(evensQuery.First, "First" & "اين تابع اولين را نشان مي دهد ")
    MessageBox.Show(evensQuery.Last, "Last" & "اين تابع اخرين را نشان مي دهد ")
    Catch ex As Exception
    End Try

    یک کد دیگه هم اینه امیدوارم مفید باشه


    Dim numberArray() As Integer = {0, 1, 2, 3, 4, 5, 6}
    Dim evensQuery2 = From num In numberArray Where num Mod 2 = 0 Select num
    For Each number In evensQuery2
    MessageBox.Show(number, "اين تابع تمام اعضا را نشان مي دهد ")
    Next
    ' مقدار جديد را جايگزين مي کند
    numberArray(1) = 10
    numberArray(4) = 22
    numberArray(6) = 8
    For Each number In evensQuery2
    MessageBox.Show(number, "اين تابع تمام اعضا جايگزين را نشان مي دهد ")
    Next



    دوستان به یاد داشته باشید من خودم در حال یاد گیری LINQ می باشم و از شما انتظار کمک بیشتر دارم

    موفق باشید

  6. #6
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام دوستان
    انتظار بیشتر از دوستان برای همفکری در ضمینه linq داشتم لطفا مطلب جدید در این ضمینه می دانید در این تاپیک قرار بدید

    کد زیر حروف یک string را در یک ارایه قرار داده و توسط msgbox به ترتیب نمایش می یابد.

    Dim qoury = From str In "سلام دوستان بیاید با هم لینکیو بیاموزیم" 'Where str <> " "
    MsgBox(qoury.Count)
    For Each str In qoury
    If str = " " Then
    MsgBox("فاصله")
    Else
    MsgBox(str)
    End If
    Next


    موفق باشید

    باز هم از دوستان تقاضای همفکری در ضمینه linq دارم لطفا مطلب جدید بدید

  7. #7

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام Mina.NET
    من یه سوال داشتم. ما توی SQL می تونیم برای جداولمون Index تعریف کنیم اما اینجا اگه Query هامن رو با Linq بنویسیم، چطوری سرعت اجرای اونا رو بهینه کنیم؟
    در ضمن، ظاهرا دو روش برای نوشتن Query وجود داره. یکی expression و یکی هم method.
    اون روش method سختتر هستش. اگه میشه راجع به اون توضیحاتی رو بنویسین.

    با تشکر از شما بابت ایجاد این تاپیک مفید .

  8. #8
    کاربر دائمی آواتار rooshan2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    گیلان- لشت نشا
    سن
    38
    پست
    179

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام
    به همه دوستان بخصوص Mina.net که این تاپیک رو ایجاد کرد من هم یک چیزی میزارم ولی بدلیل زیغ وقت تمی تونم خیلی خوب توضیح بدم سعی می کنم کم کم کاملش کنم
    همون طور که دوستان قبلش توضیح دادن:

    Language-Integrated Query (LINQ)یه زبان پرسش برای کار با انواع مختلف دادها است . با وجود ای زبان که جزوی از ویبی هم شده نیازی نیست شما دید خودتون رو برای کار بادادهای مختلف عوض کنید مثلاً :

    -دنبال مقداری داخل یک آرایه بگردید(همان طور که دوستان تو مطالب قبلی گفتن)
    - وقتی دستور اسکیوال صادر می کنید ، بادید مجزا ازبرنامه نویسی شی گرا سطح زبان خود پرسش خود را اعلام کنید .
    و غیره ....

    بخاطر اینکه شما از این به بعد بجای اینکه دستور اسکیوال بنویسید کدی با سینتکس وبی می نویسید. مهمترین نکته این زبان این هست که شما برای کار با انواع دادهای از دستورات Linqاستفاده می کنید و نیازی نیست برای هرنوع داده ای از سبک خاص یا ابزاری جدید استفده کنید مثلاً شما برای کار با Collection ها و دیتابیس Ado.net dataset و خیلی از انواع دادها از این زبان استفاده می کنید. (Linq)

    یک مثال با ببنید:
    1-یک Connectionبرای اتصال به بانک خود درست کنید از منوی << Data Add New Data Source ایجاد کنید من در مثال خودم از بانک northwind استفاده کردم
    2- دیتا ست و ابزا های اتصال به بانک مورد نظر را روی فرم خود قرار دهید.

    2-این کد رو جایی که می خواهید فیلتر رو انجام بدید قرار بدهید...
    Dim Linq1 = From C In NorthwindDataSet.Customers Where C.CompanyName Like TextBox1.Text + "*" Select C
    DataGrid1.DataSource = Linq1.ToList
    -به جا هایی که قرمز شده توجه کنید (پرسپولیس) منظور همون دیتاستی هست که شما تو قسمت قبل درست کرده بودین و روی فرم خودتون گزاشته بودین.
    -جایی هم که سبز شده منظور همون textbox هست که شما می خواهید بر اساس اون جدول رو فیلتر می کنید.
    جایی هم که رنگ زرد شده منظور این هست که نتیجه فیلتر رو به صورت لیست در آورده و اون رو به عنوان dataSource به dataGrid انتصاب بده

    روش دوم : که من خیلی تو پروژه هام ازش استفاده می کنم البته تا حالا یک با فقط پروژه بزرگ انجام داده و حدود 5/1 هست که روش داریم کار می کنیم(البته خیلی بزرگ هست خیلی خیلی)
    یه پروژه جدید Windows Apliction جدید باز کنید .
    از منوی project گزینه Add new items رو بزنید از کادر باز شده سمت چپ data رو انتخاب کنید و بعد از گزینه هایی که در سمت راست ظاهر می شوند Linq to Sql Classes رو انتخاب کنید و Add ؤو بزنید.
    بعد مثل شکل پایین:
    Dim Linq AsNew DataClasses1DataContext
    Dim Linq1 = From C In Linq.Customers Select C
    DataGrid1.DataSource = Linq1.ToList
    این دستور هم مثل دستور قبل هست ولی ما برای کار بروی جدول از شی استفاده می کنیمlinq
    من سعی می کنم بعداً بیشتر از سینتکساش بگم ولی الان دیگه فکر کنم خودتون بتونید دستورات معادل اسکیوال رو پیاده کنید.

    همان طور که دوستان در بخش های قبلی گفتن می تونید با For each یا For گزینه ها رو پیمایش کنید
    شما می تونید Store procedure رو هم به بخش سمت راست Linq class خودتون اضافه کنید
    و بجای اینکه از این سبک
    “add_new ‘“+ textbox1.text+”’,’”+textbox2.text”’”

    از Store procedure به صورت یک تابع داخلی شی linq استفاده کنید. یعنی :
    (دادهای درخاستی این تابع را وارد کنیدLinq.Insert_Customer(


    اساس کار linq این هست که شما تمام حداولی و procedure هایی رو که بهش معرفی می کنید مثل یک کلاس واقعی با متد های واقعی درون کلاس خودش نگهداری می کنه و باید به این نکته توجه کنید که اگر در این صورت جدول و پروسیجر شما تغییر ساختاری پیداکنه یعنی فیلدی اضافه یا حذق بشود یا پارامتر اضافه بشود در این صورت باید Linq class خودتون رو refresh کنید تا متد ها و پروسیجر ها هم دوباره با تغییرات جدید ایجاد بشن..

    اساتید می دونم که خیلی پیش پا افتاده هست ولی من یکم از وقتم بهینه استفاده نمی کنم وقت کم می یارم ...

    سعی می کنم تو مطالب بعدی جبران کنم....

    بازم تشکر از سازنده این تاپیک

  9. #9
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    خوشحالم که تلاشهای من جواب داد و دوستان این را موضوع به صورت جدی تری دنبال می کنند. که این باعث تلاش جدیت بیشتر من در این کار نیز خواهد شد.
    در ضمن جناب Roshan2008 مطالب شما فوق العاده بود خواهش می کنم لطف کنید و به ارائه مطالب بیشتر ادامه دهید.
    این هم یک فایل pdf در مود linq در vb
    http://www.wrox.com/WileyCDA/WroxTit...470041811.html

  10. #10
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام دوستان
    جناب روشن من کدی را کهگذاشتید را به کار بردم اجرا هم شد ولی سطر دوم این کد برای من نامفهوم بود لطفا توضیح دهید حرف c در این سطر چه معنی دارد


    Dim Linq AsNew DataClasses1DataContext
    Dim Linq1 = From C In Linq.Customers Select
    C
    DataGrid1.DataSource = Linq1.ToList



    موفق باشید

  11. #11
    کاربر دائمی آواتار rooshan2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    گیلان- لشت نشا
    سن
    38
    پست
    179

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام
    این همون کد "select * from Customer" تا اینجا که مشکلی فکر نکنم باشه

    C یک object هست که با کلمه in به جدولی که که خواستار فیلتر کردن و اجرای گزارش روی آن هستیم اشاره می کنه
    و در انتها حتی برای شما این امکان وجود دارد که با متغیر C سلولها را فیلتر کنید
    مثلاً:


    Dim Linq1 = From C In NorthwindDataSet.Customers Where C.CompanyName Like TextBox1.Text + "*"Select C.Country, C.CustomerID, C.Address
    DataGrid1.DataSource = Linq1.ToList



    با تشکر


  12. #12
    کاربر دائمی آواتار rooshan2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    گیلان- لشت نشا
    سن
    38
    پست
    179

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام
    این هم کد مربوط به ایجاد یک سطر جدید

    Dim Linq1 As New DataClasses1DataContext
    Dim ObjAdd AsNew My1 With {.Name = "Mohammad", .Lname = "Roshanfekr", .E_mail = "Program_Vb2006@yahoo.com"}
    Linq1.My1s.InsertOnSubmit(ObjAdd)
    Linq1.SubmitChanges()


    من به Linq Calss خودم یه جدول اظافه کردم که 3 تا فیلد داره Name وLnameو E_mail
    اسم جدول من در بانک My1 بوده .شما نام جدول مورد نظر خود را بکار ببرید.

    برای نمایش اطلاعات این جدول :

    Dim Linq1 As New DataClasses1DataContext
    Dim View = From C In Linq1.My1s Where C.Name Like TextBox1.Text + "*"Select C
    DataGrid1.DataSource = View.ToList


  13. #13

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    جناب روشن
    شما در مورد ردیف شماره 7 این تاپیک نظری ندارین؟

  14. #14
    کاربر دائمی آواتار Afshin160
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    528

    Thumbs up نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام ...
    يه مطلب خوندم گفتم يايد بدرد شما هم بخوره ...

    موفق باشيد
    افشين160
    فایل های ضمیمه فایل های ضمیمه

  15. #15
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام دوستان
    در جواب جناب odeson باید بگم من دقیقا نمی دانم منظور شما چی هست ولی می دونم linq بانک اطلاعاتی نیست که برای ان بتونیم indix تعریف کنیم ولی برای اینکه بیشتر در این مورد تحقیق بشه لطفا دقیقتر توضیح بدید و تا با کمک دوستان بشود جواب مناسبی برای ان پیدا کنیم در ضمن بهتر بود چیزهای که خودتان نیز در مورد linq می دانید لااقل قسمتی را در اختیار دوستان قرار می دادید

    اما در ادامه مطالب جناب2008 rooshan ایشان دستور select و insert را قرار دادند من هم در ادامه دستور update و delete در linq را می زارم امیدوارم مفید واقع گردد


    Private
    Sub Uodate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Uodate.Click

    Dim Linq1 AsNew DataClasses1DataContext
    Dim cityNameQuery = From c In Linq1.coustomers Where c.id = TextBox5.Text Select c

    ForEach customer In cityNameQuery
    'customer.id = Val(TextBox1.Text)
    customer.name = TextBox2.Text
    customer.Lname = TextBox3.Text
    customer.emall = TextBox4.Text
    'If customer.name = TextBox2.Text Then
    ' customer.name = TextBox3.Text
    'End If
    Next
    Linq1.SubmitChanges()
    'äãÇیÔ ãÌÏÏ ÌÏæá
    Dim View = From C In Linq1.coustomers Select C.id, C.name, C.Lname, C.emall
    DataGridView1.DataSource = View.ToList
    end sub






    PrivateSub Delete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Delete.Click

    Dim Linq1 AsNew DataClasses1DataContext
    Dim deleteIndivCust = From c In Linq1.coustomers Where c.id = TextBox5.Text Select c

    If deleteIndivCust.Count > 0 Then
    Linq1.coustomers.DeleteOnSubmit(deleteIndivCust.Fi rst)
    Linq1.SubmitChanges()
    EndIf
    'äãÇیÔ ãÌÏÏ ÌÏæá
    Dim View = From C In Linq1.coustomers Select C.id, C.name, C.Lname, C.emall
    DataGridView1.DataSource = View.ToList
    End Sub





    اگر نامفهوم بود به مطالب جناب rooshan2008 در همین تاپیک مراجعه کنید چون در ادامه مطالب ایشون می باشد.


    امیدوارم مفید باشد

  16. #16
    کاربر دائمی آواتار shahab_ss
    تاریخ عضویت
    فروردین 1384
    محل زندگی
    bangkok
    سن
    45
    پست
    434

    Smile نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

     
    MyDataClassesDataContext m_obj = new MyDataClassesDataContext();
    var m_query = from c in m_obj.tblPersonels
    where c.IsActive == true
    select new
    {
    Name = c.PName,
    ID = c.ID

    };


    this.comboBox1.DataSource = m_query;
    this.comboBox1.DisplayMember = "Name";
    this.comboBox1.ValueMember = "ID";


    نمونه ای برای پر کردن یک کمبو باکس توسط لینک

  17. #17
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    بندرعباس
    پست
    236

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    من توی استفاده از لینکیو مشکل پیدا کردم
    هنگامی که از این کد استفاده می کنم بجای دیدن رشته ها طول رشته رو توی دیتاگرید نشون می ده ممکنه منو راهنمایی کنید؟
          Dim A() As String = {"شنبه", "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنج شنبه", "جمعه"}
    Dim D = From T In A Select T
    Me.DataGridView1.DataSource = D.ToList

  18. #18
    کاربر دائمی آواتار rooshan2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    گیلان- لشت نشا
    سن
    38
    پست
    179

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام
    به مشکل به این خاطر هست که شما آرایه ای را به دیتاسورس انتصاب داده اید و چون شی که به دیتاسورس انتصاب داده می شود باید شامل headerو یا Column یا سربرگ باشد تا سربرگ آن نیز نمایش داده شود
    راه حل: شما با یک حلق for each نتیجه دستور Linq را خوانده و در Datagridview نمایش دهید.

    راه دوم:یا اطلاعات را داخل یک datatable سازمان دهی کرده و بعد نمایش دهید:

    Dim DTable AsNew DataTable

    Dim A() As String = {"شنبه", "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنج شنبه", "جمعه
    DTable.Columns.Add(
    "Value")
    For i = 0 To A.Count - 1
    DTable.Rows.Add()
    DTable.Rows(i).Item(0) = A(i)
    Next

    Dim D = From T In DTable Select T
    Me.DataGridView1.DataSource = D.asdataView


    راه های دیگر هم وجود داره...من کد بالا رو اجرا نکردم ولی فکر کنم دست نوشته باشم

  19. #19
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    بندرعباس
    پست
    236

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    ه مشکل به این خاطر هست که شما آرایه ای را به دیتاسورس انتصاب داده اید و چون شی که به دیتاسورس انتصاب داده می شود باید شامل headerو یا Column یا سربرگ باشد تا سربرگ آن نیز نمایش داده شود
    ممنون از راهنمایی تون ولی من آرایه رو به دیتاسورس نسبت ندادم
    اگه توجه کنید خروجی متغیر D هست که اون هم به دیتالیست تبدیل می شه
    ولی چیزی که دستگیرم شد تنها property متغیر string طولشه( Length)
    فکر می کنم اگه بجز این خصوصیت خصوصیت دیگه ای داشت حتما اونو هم نشون می داد.
    ممنون

  20. #20
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    جناب visual_sadegh فکر می کنم مشکل شما همان طور که جناب roshan گفتند با حلقه for حل شود

    نحوه انجام این کار نیز در همین تاپیک چند بار گفته شد

  21. #21
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    فعلاً تهران - دائم مریلند آمریکا
    پست
    354

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    کدها فقط در 2008 اجرا می شود

  22. #22

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    با سلام خدمت دوستان وتشکر از بابت راه انداختن موضوعی که بسیار جدید است
    من یک dll میخوام بسازم که دستورات insert,update,delete,select آن با استفاده از دستورات linq باشه ونام هر فایل داخل linq متغیر بهش ارسال بشه دستورات select و delete بنظر قابل انجام هست چون در دستور
    From c In Linq.PERSONELs Select c شاید بشه بجای پرسنل یک نام فایل دیگه قرار بگیره و select c آخر نیز بنظر میشه پارامتری باشه البته c آخرش که میشه دستور delete و select را روی آن استفاده کرد حالا حداقل دو دستور delete و select را اگه بخواهیم پارامتری کنیم چطوری شروع کنیم ولی در مورد insert,update بنظر میاد نشه چون نام فیلدهای هرفایل را بترتیب با مقداری که میخوام ارسال کنیم که بنظر سخت میاد دوستان من پیشنهاد میکنم که این را شروع کنیم که یک dll بشه که در اختیار همه قرار بگیره
    عزیزان ببخشید گستاخی کردم ولی بنظرم اگه بشه این dll را شاخت بدرد خیلی ها میخوره
    من خودم شروع کردم ولی هنوز به نتیجه نرسیدم
    باتشکر از دوستان

  23. #23

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    با سلام خدمت دوستان
    یک سوال دارم از دوستان بالاخص آقای روشن چون اولین بار مطلب اتصال به یک دیتابیس برای linq را ایشون نمایش داد
    سوالم اینه که وقتی ما داریم از طریق کلاس Linq to sql class یک DataClasses1DataContext تعریف میکنیم وفایلها را دراگ میکنیم چطوری از دستوری داخل یک حلقه استفاده کنیم که بتونه تمام فایلها را نامهاش را پیدا کنه وداخل این DataClasses1DataContext اضافه کنه تا بعداز این دستور به تمام فایلهای داخل این دیتابیس از طریق linq دسترسی داشته باشیم

    ممنون میشم کمک کنید

  24. #24
    کاربر دائمی آواتار rooshan2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    گیلان- لشت نشا
    سن
    38
    پست
    179

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام
    این کار رو میشه انجام داد ولی :
    شما به تابع یا رویه مورد نظر که می خواد Select یا Delet انجام بده یک دیتا تیبل یا dataset ارصال کنی .تا به این صورت دینامیک بشه.
    2-وقتی شما چیزی رو داخل Linq Class دراگ می کنید به صورت خود کار تمام متد ها و پروپرتی ها رو ایجاد می کنه و مقدارها و تمام ارتباط ها رو برقرار می کنه به فرض مثال جدول Customer رو من به داخل linq class دراگ می کنم کدی که به صورت خودکار ایجاد می کنه این هست::


    <Table(Name:=
    "dbo.Customers")> _
    Partial


    PublicClass Customer
    Implements System.ComponentModel.INotifyPropertyChanging, System.ComponentModel.INotifyPropertyChanged

    PrivateShared emptyChangingEventArgs As PropertyChangingEventArgs = New PropertyChangingEventArgs(String.Empty)

    Private _CustomerID AsString

    Private _CompanyName AsString

    Private _ContactName AsString

    Private _ContactTitle AsString

    Private _Address AsString

    Private _City AsString

    Private _Region AsString

    Private _PostalCode AsString

    Private _Country AsString

    Private _Phone AsString

    Private _Fax AsString

    PublicSubNew()
    MyBase.New
    OnCreated
    EndSub

    <Column(Storage:=


    "_CustomerID", DbType:="NChar(5) NOT NULL", CanBeNull:=false, IsPrimaryKey:=true)> _
    PublicProperty CustomerID() AsString
    Get
    ReturnMe._CustomerID
    EndGet
    Set
    If (String.Equals(Me._CustomerID, value) = false) Then
    Me.OnCustomerIDChanging(value)
    Me.SendPropertyChanging
    Me._CustomerID = value
    Me.SendPropertyChanged("CustomerID")
    Me.OnCustomerIDChanged
    EndIf
    EndSet
    EndProperty

    <Column(Storage:=


    "_CompanyName", DbType:="NVarChar(40) NOT NULL", CanBeNull:=false)> _
    PublicProperty CompanyName() AsString
    Get
    ReturnMe._CompanyName
    EndGet
    Set
    If (String.Equals(Me._CompanyName, value) = false) Then
    Me.OnCompanyNameChanging(value)
    Me.SendPropertyChanging
    Me._CompanyName = value
    Me.SendPropertyChanged("CompanyName")
    Me.OnCompanyNameChanged
    EndIf
    EndSet
    EndProperty

    <Column(Storage:=


    "_ContactName", DbType:="NVarChar(30)")> _
    PublicProperty ContactName() AsString
    Get
    ReturnMe._ContactName
    EndGet
    Set
    If (String.Equals(Me._ContactName, value) = false) Then
    Me.OnContactNameChanging(value)
    Me.SendPropertyChanging
    Me._ContactName = value
    Me.SendPropertyChanged("ContactName")
    Me.OnContactNameChanged
    EndIf
    EndSet
    EndProperty

    <Column(Storage:=


    "_ContactTitle", DbType:="NVarChar(30)")> _
    PublicProperty ContactTitle() AsString
    Get
    ReturnMe._ContactTitle
    EndGet
    Set
    If (String.Equals(Me._ContactTitle, value) = false) Then
    Me.OnContactTitleChanging(value)
    Me.SendPropertyChanging
    Me._ContactTitle = value
    Me.SendPropertyChanged("ContactTitle")
    Me.OnContactTitleChanged
    EndIf
    EndSet
    EndProperty

    <Column(Storage:=


    "_Address", DbType:="NVarChar(60)")> _
    PublicProperty Address() AsString
    Get
    ReturnMe._Address
    EndGet
    Set
    If (String.Equals(Me._Address, value) = false) Then
    Me.OnAddressChanging(value)
    Me.SendPropertyChanging
    Me._Address = value
    Me.SendPropertyChanged("Address")
    Me.OnAddressChanged
    EndIf
    EndSet
    EndProperty

    <Column(Storage:=


    "_City", DbType:="NVarChar(15)")> _
    PublicProperty City() AsString
    Get
    ReturnMe._City
    EndGet
    Set
    If (String.Equals(Me._City, value) = false) Then
    Me.OnCityChanging(value)
    Me.SendPropertyChanging
    Me._City = value
    Me.SendPropertyChanged("City")
    Me.OnCityChanged
    EndIf
    EndSet
    EndProperty

    <Column(Storage:=


    "_Region", DbType:="NVarChar(15)")> _
    PublicProperty Region() AsString
    Get
    ReturnMe._Region
    EndGet
    Set
    If (String.Equals(Me._Region, value) = false) Then
    Me.OnRegionChanging(value)
    Me.SendPropertyChanging
    Me._Region = value
    Me.SendPropertyChanged("Region")
    Me.OnRegionChanged
    EndIf
    EndSet
    EndProperty

    <Column(Storage:=


    "_PostalCode", DbType:="NVarChar(10)")> _
    PublicProperty PostalCode() AsString
    Get
    ReturnMe._PostalCode
    EndGet
    Set
    If (String.Equals(Me._PostalCode, value) = false) Then
    Me.OnPostalCodeChanging(value)
    Me.SendPropertyChanging
    Me._PostalCode = value
    Me.SendPropertyChanged("PostalCode")
    Me.OnPostalCodeChanged
    EndIf
    EndSet
    EndProperty

    <Column(Storage:=


    "_Country", DbType:="NVarChar(15)")> _
    PublicProperty Country() AsString
    Get
    ReturnMe._Country
    EndGet
    Set
    If (String.Equals(Me._Country, value) = false) Then
    Me.OnCountryChanging(value)
    Me.SendPropertyChanging
    Me._Country = value
    Me.SendPropertyChanged("Country")
    Me.OnCountryChanged
    EndIf
    EndSet
    EndProperty

    <Column(Storage:=


    "_Phone", DbType:="NVarChar(24)")> _
    PublicProperty Phone() AsString
    Get
    ReturnMe._Phone
    EndGet
    Set
    If (String.Equals(Me._Phone, value) = false) Then
    Me.OnPhoneChanging(value)
    Me.SendPropertyChanging
    Me._Phone = value
    Me.SendPropertyChanged("Phone")
    Me.OnPhoneChanged
    EndIf
    EndSet
    EndProperty

    <Column(Storage:=


    "_Fax", DbType:="NVarChar(24)")> _
    PublicProperty Fax() AsString
    Get
    ReturnMe._Fax
    EndGet
    Set
    If (String.Equals(Me._Fax, value) = false) Then
    Me.OnFaxChanging(value)
    Me.SendPropertyChanging
    Me._Fax = value
    Me.SendPropertyChanged("Fax")
    Me.OnFaxChanged
    EndIf
    EndSet
    EndProperty

    PublicEvent PropertyChanging As PropertyChangingEventHandler Implements System.ComponentModel.INotifyPropertyChanging.Prop ertyChanging

    PublicEvent PropertyChanged As PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.Prope rtyChanged

    ProtectedOverridableSub SendPropertyChanging()
    If ((Me.PropertyChangingEvent IsNothing) _
    =


    false) Then
    RaiseEvent PropertyChanging(Me, emptyChangingEventArgs)
    EndIf
    EndSub

    ProtectedOverridableSub SendPropertyChanged(ByVal propertyName As [String])
    If ((Me.PropertyChangedEvent IsNothing) _
    =


    false) Then
    RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
    EndIf
    EndSub
    End


    Class



    فکر کنم از راه Codedom هم بشه

    من این پیشنهاد رو می کنم برای اینکه دینامک بشه بهتر اینکار رو کنی وقتی اسم جدولی از بانک برات ارسال میشه اول اطلاعات داخل بانک رو با sql دربیار وداخل datatableبریز بعد حالا از این به بعد دستور Linq رو روی DataTable اجرا کن و نتیجه رو برگشت بده.

    راستی این فقط یه پیشنهاد بود سو تفاهم پیش نیاد..

  25. #25

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    با سلام خدمت دوستان
    چند تا نکته توی جستجوهام بهش دست پیدا کردم واسه دوستان قرار میدم
    1- داخل دستور linq میشه از order by استفاده کرد مثال
    Dim titlesAscendingPrice = From b In Books order By b.Price
    2- میشه دااخل دستور برای برگردوندن چند تا رکورد از دستور زیر استفاده میکنیم
    Dim customerList = From cust In customers Take 10
    که 10 رکورد اول را برمیگردونه
    3- اگه بخواهیم چند تارکورد اول رابیخیال بشیم و از یک نقطه به بعد رکوردها رابرگردونیم از دستور زیر استفاده میکنیم

    Dim customerList = From cust In customers Skip 10
    4- برای اینکه دوتا مجموعه جواب را ترکیب کنیم از دستور union استفاده میکنیم
    Dim customers1 = From cust In domesticCustomers
    Dim customers2 = From cust In internationalCustomers
    (Dim customerList = customers1.Union(customers2
    () Return customerList.ToList

    باعث میشه کل جوابهای دوجدول را داخل customerlist قرار بده
    امیدوارم مفید باشه بعدا در صورت استقبال مطالب دیگه هم اضافه میکنم

    4

  26. #26
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام دوستان
    فکر می کنم به اندازه کافی در مورد مفاهیم اولیه linq بحث شد و باید به مباحث بیشرفته تر پرداخت
    مثلا چطور یک دستور select تو در تو نوشت
    و مشابه ان

    مطالب جناب مرتضی حمزه ای در این راستا بوده که جای قدردانی دارد
    ارزوی موفقیت برای همه دوستان دارم موفق باشید
    آخرین ویرایش به وسیله mina.net : پنج شنبه 30 آبان 1387 در 08:31 صبح

  27. #27
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام دوستان
    یک برنامه حاوی تعداد زیادی QOURY را برای تان گذاشتم امیدوارم مفید واقع شود

    منتظر برنامه بعدی حاوی مطالبی در مورد LINQ TO SQL باشید
    فایل های ضمیمه فایل های ضمیمه

  28. #28
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام دوستان
    همان طوری که قول داده بودم یک نمونه برنامه از linq to sql برای شما عزیزان در زیر قرار دادم امیدوارم مفید واقع شود
    فایل های ضمیمه فایل های ضمیمه

  29. #29
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام دوستان
    من به علت مشکلاتی طی چند روز اخیر داشتم نتوانستم مطلب جدیدی برای شما قرار بدم
    مباحث لینکیو ادامه دارد لطفا ادامه بدید .
    به نظرم linq to xml و linq to sql مباحث خوبی برای ادامه بحث باشد.
    امیدوارم دوستان خسته نشده باشند.

  30. #30
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    نقل قول نوشته شده توسط mina.net مشاهده تاپیک
    سلام دوستان
    من به علت مشکلاتی طی چند روز اخیر داشتم نتوانستم مطلب جدیدی برای شما قرار بدم
    مباحث لینکیو ادامه دارد لطفا ادامه بدید .
    به نظرم linq to xml و linq to sql مباحث خوبی برای ادامه بحث باشد.
    امیدوارم دوستان خسته نشده باشند.
    با توجه به اینکه ممکن LINQ to SQL در آینده توسعه داده نشه و یا کنار گذاشته بشه خیلی روش سرمایه گذاری نکنید ، بجاش از linq to entity استفاده کنید.

  31. #31
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    نقل قول نوشته شده توسط linux مشاهده تاپیک
    با توجه به اینکه ممکن LINQ to SQL در آینده توسعه داده نشه و یا کنار گذاشته بشه خیلی روش سرمایه گذاری نکنید ، بجاش از linq to entity استفاده کنید.
    [quote=mina.net;647805]
    سلام دوستان
    جناب linux من هم با شما موافقم و می دانم که linq اخر برنامه نویسی نیست و دوستان فکر نکنن صرفا باlinq همه مشکلاتشان حل خواهد شد . به نظر من مهمترین عیب linq to sqlو ado .net این است که برنامه نویسان بخصوص افرادی که در مسیر یادگیری هستند را به علت سادگی کاری که دارد از فراگیری موضوعات پیشرفته تر که نیاز به ممارست بیشتر دارد باز می دارد . جناب linux از یاداوری شما بسیار سپاس گذارم . از linq به اندازه خودش انتظار داشته باشید.در ضمن در مورد linq to entity کمی توضیح بدید.
    موفق باشید.

  32. #32
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    45
    پست
    634

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام دوستان
    مدتی به اینترنت دسترسی نداشتم به نظر می رسد دوستان مبحثی که در LINQ شروع کردیم را رها کردند خواهش می کنم .
    لطفا دوستان مبحث LINQ را جدی تر دنبال کنید.

  33. #33
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    کرمانشاه
    پست
    51

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    با سلام خدمت تمامی دوستان.مطرح کردن این بحث با این تعداد کم استقبال واقعا جای تعجب دارد.از دوستان انتظار دارم که در این بحث با جدیت بیشتری ادامه دهنده و پیگیر مطالب باشند.
    LINQ انقلابی در زمینه کدنویسی میباشد.این زبان هرچند ، بیشتر در رابطه با SQL قدرتمند است ، اما حقیقت امر آنست که LINQ در تمامی مراحل حل هر مساله ای که پردازشی روی داده های منظم انجام میگیرد دخیل است. Lambda Expression عنصری است که تحت عنوان متدهایی با فرمت خاص جدای از تعریف های ارائه شده برای متدهای متداول میباشند که دارای کاربردهای سریع و خاص در جهت استفاده بهینه از شکل انکپسوله شده LINQ هستند.
    هرچند LINQ در زمینه کار با پایگاه داده ها بیشتر مورد توجه قرار میگیرد ، اما عناصر دیگر دات نت نظیرژنریک ها ، آرایه ها ، لیست ها و.... LINQ را در خود توسط Lambda Expression و Delegate ها انکپسوله کرده اند.از طرفی Delegate ها هم در جهت خدمت به زبان یکپارچه سازی داده ها توسعه داده شده است. تقریبا هر آنچه که در سی شارپ 2 نقطه قدرت بود و هر آنچه که زبانهای مبتنی بر پلت فرم دات نت را بر زبانهای دیگر برتری می داد به شکل مستقیم و یا غیر مستقیم در حال توسعه فقط بخاطر LINQ هستند.پس پس پس LINQ در آینده با قدرت بیشتری و با در اختیار گرفتن نحو سی شارپ و نهادینه کردن خود ، قدرت خودرا به نمایش میگذارد.
    همانطور که دوستان عزیز هم میدانند پرس وجوهایی که توسط LINQ بدون تبدیل صریح از سوی برنامه نویس اخذ میشود دارای نوعی که مورد انتظار است نمیباشند

    مثلا به کد زیر توجه کنید:

     struct Student
    {
    int grade;
    public int Grade
    {
    get { return grade; }
    set { grade = value; }
    }

    string name;
    public string Name
    {
    get { return name; }
    set { name = value; }
    }

    string family;
    public string Family
    {
    get { return family; }
    set { family = value; }
    }
    }
    static void Main(string[] args)
    {
    getStudents();
    }
    private static void getStudents()
    {
    Student[] allstudents = new Student[]
    {
    new Student(){ Name="Ali", Family="Amiri", Grade=19},
    new Student() { Name="Sajjad", Family="Shirzadee", Grade=20},
    new Student() { Name="Amir", Family="Hasani", Grade=18},
    new Student() { Name="Amini", Family="Amini", Grade=13},
    new Student() { Name="Reza", Family="Taheri", Grade=12},
    new Student() { Name="Mohammad", Family="Shirazee", Grade=9},
    };
    var students = from d in allstudents
    where d.Grade > 13
    select new { d.Name, d.Family };
    }
    }

    در این نمونه کد Structs ی به نام Student تعریف شده است که شامل فیلدهای نام، فامیلی و نمره می باشد .کاری که متد getStudents انجام میدهد آن است که دانش آموزانی را در آرایه ای ایجاد میکند و فیلدهای آنها را ست میکند. سپس پرس و جویی را برای گرفتن نام و فامیلی دانش آموزانی که نمره آنها بالاتر از 13 میباشد ایجاد میکنیم.حال اگر بخواهیم نمیتوانیم students را بازگشت بدهیم.چرا که نوع بازگشتی متدها را نمیتوان از نوع var تعریف کرد.اما در نسخه بعدی سی شارپ و وی بی این انتظار برآورده شده است و شما میتوانید نوع بازگشتی یک متد را حتی var تعریف کنید.این تغییر و تحولات نشان میدهند که مایکروسافت نگاه ویژه ای به LINQ دارد.
    پس از این تعاریف (هر چند کم) که ارائه شد ، چیزی که بزرگترین مزیت LINQ است و به چشم هم نمی آید خیال راحت برنامه نویس در کار نکردن با کلمه Sql است.با این تفاسیر ، نگاه جدید توسعه دهندگان دات نت به مقوله پایگاه داده و وجود زیر ساخت مناسبی مانند LINQ زمینه تبدیل کار با پایگاه داده ها که از غیر شیء گراترین عناصر موجود در دات نت محسوب میشوند را به OR Mapping یا (نگاشت رابطه ای شیئ) تبدیل کرده است.در پس پرده توسط Entity Class میتوان با یک دیتابیس به مثابه آرایه ای از داده ها رفتار کرد.اینک LINQ با Entity Class ها ترکیب قدرتمندی تشکیل میدهند که میتوان از آنها برای اعتلای کدهای خود استفاده کرد.
    یکی از نکاتی که بایستی به آن اشاره نمود این است که وقتی مثلا یک Entity Class را به دیتاگرید متصل میکنید مشکلی پیش نمی آید ، اما وقتی نتیجه پرس و جویی که یک نوع بدون نام است را به دیتا گرید متصل میکنید.مشکلی که پیش می آید این است که دیتا گرید آنقدر با هوش نیست که بتواند Property های موجود در آن نوع را تشخیص بدهد چرا که مکانیزم انجام این کار در دیتاگرید قرارداده نشده است.از آنجا که اشیایی که اینترفیس IList ویا IEnumerator ویا IBindingList را پیاده سازی میکنند ، میتوانند به دیتاگرید متصل شوند، پس حتی یک رشته را هم میتوان به دیتاگرید وصل کرد.اما داده ای نمایش داده نمیشود .
    با این محدودیت خود ما باید جواب را هرچه بیشتر به IList ویا IBindingList نزدیک کنیم . یعنی به شکلی نوع بی نامی که حاصل از پرس وجو مییاشد را تبدیل کنیم .بنظر می آید برای رسیدن به این منظور باید از متد ()students.ToList استفاده کنیم.در اینصورت اگر یک دیتاگرید داشته باشیم
    میتوانیم از این متد برای نسبت دادن داده ها به دیتاگرید استفاده کنیم.

    نکته بعد :
    واما Select های تودر تو به یک سری فرضیات احتیاج داریم خوب دقت کنید:
    Grade:آرایه ای از اعداد اعشاری است که نمرات دانش آموز در آن ذخیره میشود.
    و این کد مقداردهی اولیه تعدادی از دانش آموزان میباشد.
    کد:

    Student[] allstudents = new Student[]
    {
    new Student()
    {
    Name="Ali", Family="Amiri",
    City="Kermanshah",Grade=new double[]{10,12,15,18,20}
    },
    new Student()
    {
    Name="Sajjad", Family="Shirzadee",
    City="Tabriz",Grade=new double[]{9,6,14,13,20}
    },
    new Student()
    {
    Name="Amir", Family="Hasani",
    City="Kermanshah", Grade=new double[]{20,17,9 ,16,19}
    },
    new Student()
    {
    Name="Amini", Family="Amini",
    City="Mashhad", Grade=new double[]{5 ,10,11,12,20}
    },
    new Student()
    {
    Name="Reza", Family="Taheri",
    City="Esfahan",Grade=new double[]{13,11,7 ,14,14}
    },
    new Student()
    {
    Name="Mohammad", Family="Shirazee",
    City="Kerman", Grade=new double[]{10,12,15,18,20}
    }
    };


    حالا اسم دانش آموزانی که اهل کرمانشاه هستند و معدل آنها بالای 15 میباشد را در دیتا گرید نمایش میدهیم :

    کد:

    var students = from d in
    (from st in allstudents
    where st.City == "Kermanshah"
    select new { st.Name, Average = st.Grade.Sum() / st.Grade.Length })
    where d.Average > 15
    select new { d.Name };
    this.dataGridView1.DataSource = students.ToList();


    توضیح :

    select درونی اسم ومعدل دانش آموزانی را در غالب نوع بدون نام به d نسبت میدهد و where
    دوم نتایج را فیلتر میکند ودر قسمت آخر هم نام را از d برمیداریم
    آخرین خط هم نتیجه را به لیست تبدیل و به دیتاگرید میدهیم.
    منزه است دانای نیاموخته

  34. #34

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام
    لطفا" کمک
    دستور ی می خوام که ID آخرین رکورد که در جدول ثبت شده بده

  35. #35
    کاربر جدید
    تاریخ عضویت
    آذر 1387
    محل زندگی
    شیراز
    پست
    2

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    نقل قول نوشته شده توسط roya1987 مشاهده تاپیک
    سلام
    لطفا" کمک
    دستور ی می خوام که ID آخرین رکورد که در جدول ثبت شده بده

    دوست عزیز شما می تونید از کد زیر برای این کار استفاده کنید
    1 - باید یه شی جدید از کلاس datacontext ایجاد کنی که ما فرض رو بر این میگیریم که شی ایجاد شده دارای نام Dc می باشد
    2 -
    decimal id =(dc.ExecuteQuery<
    decimal>("SELECT IDENT_CURRENT ('Table Name') AS Current_Identity")).ToList()[0];
    3 - به جای tablename اسم جدولی رو بزار که میخوای آخرین ID شو در بیاری

  36. #36

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    با سلام خدمت دوستان گرامی
    اگر ممکنه در مورد پیمایش رکورد ها با استفاده از linq کمی توضیح دهید
    مثلا چگونه میشه در برنامه دو کلید به نام های movenext و moveprevious گذاشت که با کلیک بر روی اینها بتوان به رکورد قبلی یا بعدی رفت و مقادیر آنها در TextBox نمایش داده شود

    مرسی از لطف همگیتون

  37. #37
    VIP آواتار raziee
    تاریخ عضویت
    خرداد 1404
    محل زندگی
    تهران
    سن
    36
    پست
    2,208

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    مثلا چگونه میشه در برنامه دو کلید به نام های movenext و moveprevious گذاشت که با کلیک بر روی اینها بتوان به رکورد قبلی یا بعدی رفت و مقادیر آنها در TextBox نمایش داده شود
    لینک زیر رو نگاه بفرمایید.
    http://www.barnamenevis.org/sh...d.php?t=196548
    میتونه کمکون کنه.
    این لیک هم هست:
    https://barnamenevis.org/showpo...8&postcount=20
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  38. #38
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    46

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    اینو توی یه وبلاگ دیدم . به نظرم جالب اومد :
    - LINQ چیست؟
    - LINQ چه عملی انجام می دهد؟
    - چگونه می توان از LINQ استفاده کرد؟
    - چرا LINQ بوجود آمده است؟
    - چه نوع استفاده هایی دارد؟



    مقدمه

    اینها سوالاتی بودند که وقتی برای اولین بار نام LINQ را شنیدم ، برایم مطرح شده بود و نمی دانستم از کجا شروع کنم و اصلا چرا باید به LINQ مهاجرت کنم. مگر چه مزیتی بر ADO.net یا سایر تکنولوژیهای .Net دارد. اما از آنجا که بنا به درخواست مجبور به استفاده از LINQ در یکی از پروژه ها بودم ، بناچار یادگرفتم که چکار باید بکنم.
    شما اگر از این مقاله استفاده کنید می توانید مشکل خود را در آشنایی و استفاده از LINQ رفع کنید و اگر فرصت شد بحث های پیشرفته را هم عنوان خواهم کرد.
    نکته مهم: همینجا می گویم این مقاله هیچ ربطی به هیچ کتاب یا مقاله یا MSDN یا هیچ مرجعی ندارد و فقط دیدگاه و نحوه برنامه نویسی بنده با این تکنولوژی در C#‎.net می باشد. حالا درست یا غلط بماند، مهم این است که این دیدگاه بنده از LINQ ، جواب داده و مشکلی برایم پیش نیاورده و نیازهایم را برطرف می کند.
    LINQ چیست؟
    مایکروسافت در .net 3.5 تکنولوژی جدیدی را تحت عنوان LINQ معرفی کرد که کاملا" بر اساس شی گرایی و ایجاد نمونه از کلاسهای مختلف می باشد. آنچه من درک کرده ام این است که با استفاده از این تکنولوژی شما می توانید از همه چیز ،نمونه بسازید و خواصیتها آنرا استفاده کنید.
    اصلا چرا نمونه می سازیم؟ خیلی ساده بگویم. برای اینکه از خاصیتهای آن کلاس با استفاده از آن شیئ ایجاد شده در جاهای مختلف استفاده کنیم!!! (که چکار کنیم؟) که با استفاده از خواصیتها بتوانیم برنامه نویسی پویا و شیئ گرایی داشته باشیم که اشیاء را در جاهای مختلف استفاده کنیم.
    اما اینکه LINQ برای چه بوجود آمده؟
    من تابحال برای نوشتن یک insert در بانک اطلاعات منابع مختلفی را صدا می زدم اما در حال حاضر تنها یک فیلد نام را در DATABASE ذخیره می کنم:
    ADO.NET









    using System.Data.SqlClient;





    string ConnectionStr = "Data Source=;Initial Catalog=speer1;integrated


    security=true";





    string commandStr;





    DataSet dataset;





    SqlDataAdapter adapter;





    SqlCommandBuilder command;





    DataTable table;





    DataRow row;





    commandStr = "select * from tcostumer";





    adapter = new SqlDataAdapter(commandStr, ConnectionStr);





    dataset = new DataSet();





    adapter.Fill(dataset, "tcostumer");





    table = dataset.Tables[0];





    DataRow newRow = table.NewRow();





    newRow["name"] = NameTXT.Text.Trim();





    dataset.Tables["tcostumer"].Rows.Add(newRow);





    command = new SqlCommandBuilder(adapter);





    adapter = command.DataAdapter;





    adapter.Update(dataset, "tcostumer");








    استفاده از LINQ :





    Add New Item to project à select data à
    Linq to SQL (Named MyLinqObj) à


    connect to database à bring the tcostumer table in MyLinqObj




    می خواهم این فیلد را با استفاده از LINQ داخل بانک قرار بدم:









    using System.Data.Linq.SqlClient;

















    MyLinqObj budgetDataContext = new MyLinqObj();

















    List<tcostumer> custObj = budgetDataContext.tcostumer.ToList();

















    custObj.name = NameTXT.Text.Trim();

















    budgetDataContext.tcostumer.InsertOnSubmit(custObj );

















    budgetDataContext.SubmitChanges();















    همین !
    در ادامه : شروع برنامه نویسی با LINQ بدون هیچ پیش گفتار
    در قسمت Solution Explorer می خواهیم آیتم جدیدی اضافه کنیم. از قسمت Data گزینه Linq To DataBase را انتخاب کنید و نام آنرا مشخص کنید مثلا MyLinqObj . با این کار فایل .dbml (تقریبا چیزی شبیه به مدیر ارتباط با پایگاه) به پروژه اضافه میشود. به شکل زیر توجه کنید:








    حالا جداول دیتابیس که قرار است روی آنها تغییراتی اعمال شود به قسمت designer فایل dbml . اضافه می کنیم. (dragging to .dbml )
    حال می توانیم وارد کد نویسی شویم.
    ابتدا باید نمونه ای از این فایل dbml ایجاد کنیم:









    public DataClasses1DataContext dbContext = new DataClasses1DataContext();













    اضافه کردن به پایگاه داده:









    NameTable name1 = new NameTable(); // آبجکتی از نام جدول مورد نظر می


    سازیم

















    name1.Name = nametxt.Text; // از تکس باکس اطلاعات را با فیلد های مربوطه در



    جدول وارد می کنیم

















    name1.Tel = Convert.ToInt64(teltxt.Text);

















    dbContext.NameTables.InsertOnSubmit(name1); // درپایان اطلاعات جدیدرابه جدول


    واردمیکنیم

















    dbContext.SubmitChanges(); // عملیات پایانی که اطلاعات را ثبت نهایی می


    کند


























    ویرایش :
    خیلی مشکل نیست فقط باید یک مقایسه انجام شود با textbox مورد نظر و سپس سایر اطلاعات آن فیلد را با دستورات روتین انتخاب میکنیم.

















    NameTable name2 = dbContext.NameTables.Where(p=>p.Name.Trim()


    == nametxt.Text.Trim()).FirstOrDefault();

















    name2.Name = nametxt.Text;

















    name2.Tel = Convert.ToInt64(teltxt.Text);

















    dbContext.SubmitChanges();






















    حذف :


























    NameTable name3 =


    dbContext.NameTables.Where(p=>p.Name.Trim()==


    nametxt.Text.Trim()).FirstOrDefault();

















    dbContext.NameTables.DeleteOnSubmit(name3);

















    dbContext.SubmitChanges();






















    انتخاب لیستی از اطلاعات ثبت شده از دیتابیس برای اضافه کردن در gridview :

















    List<NameTable> nameList =


    dbContext.NameTables.OrderBy(p => p.Name).ToList();








    foreach (var item in nameList)








    {








    dataGridView1.Rows.Add(item.Name,


    item.tel);








    }















    نحوه استفاده از LINQ:
    در تمام دستورات بالا و سایر دستورات مربوط به ساختار برنامه نویسی با LINQ چند نکته ثابت وجود دارد که با رعایت آنها می توان از این تکنیک به راحتی استفاده کرد:
    - انتخاب از نام جدول مورد نظر: از نام جدول برای مشخص کردن هدف دستور مربوطه استفاده می کنیم. یعنی نام جدول اعلام می کند که قصد داریم از این قسمت از پایگاه برای انجام عملیات استفاده کنیم چه بصورت تهیه لیستی از اطلاعات ثبت شده یا چه بصورت اعلام سایر فیلدهای مربوط به یک داده مشخص یا ...
    - تهیه آبجکتی از جدول مورد نظر
    - اعلام نام شیئی که به ابزار پایگاه ما مرتبط می باشد. یعنی می خواهیم از کدام DataContext استفاده کنیم.
    - اعلام جدول موجود در آبجکت مربوط به DataContext
    - شرط انتخاب اطلاعات از جدول در صورت نیاز: میخواهیم بگوییم از جدول مربوطه و مد نظر کدام عناصر را انتخاب کن؟ این کار با یک دستور Where و انتخاب اشیاء آن جدول و مقایسه آن با شرط مورد نظر ما انجام میگیرد یعنی:
    Where (p => p.FieldName == (Decision))
    - اعلام شایر شرطها مثلا مرتب سازی با همان ساختار شرط انتخاب
    - تهیه لیست یا انتخاب نوع در پایان کوئری
    به همین سادگی یک query در LINQ ساختیم. بجای آنکه بگوییم :

    “Select name From NameTable where personelNumber Like =%”+TextBox1.text;



    میگوییم:









    List<nameTable> obj = DataContextObj.nameTable.Where(


    p=> p.name.Contains(textbox1.text)).toList();







    این شرحی از ساختمان LINQ بود اما مطلب در اینجا خلاصه نمی شود.
    من در این مقاله فقط نحوه استفاده ابتدایی از لینک را توضیح دادم.
    در مقاله بعدی نحوه ساخت پروسه های از پیش تعریف شده و بیان عیبهای مربوطه و استفاده از LINQ در لایه بندی را عنوان خواهم کرد.

    با آرزوی موفقیت



    آخرین ویرایش به وسیله fateme65 : چهارشنبه 30 شهریور 1390 در 23:08 عصر

  39. #39

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    با سلام به همگی
    ابتدا از تمام فایلهایی که در مورد linq گذاشتید از شما تشکر می کنم من برای پروژه پایانی دارم با linq کار میکنم ولی من نمیتونم با linq 3 عمل پشتیبان گیری و بازگردانی پشتیبان و گزارشگیری را انجام بدم از شما خواهش و تقاضا دارم در این 3 زمینه اگر فایلی یا کدی دارید که به من کمک میکند اینجا بزارید خیلی لازمش دارم خواهشا اگر فایل دارید به ایمیلم ارسال کنید یااینجا بزارید اینم ایمیلم
    ramzani.ebrahim@yahoo.com

  40. #40

    نقل قول: اگر علاقه ای به LINQ دارید وارد شوید

    سلام به مهندسان عزیز
    من می خوام توسط دستورات linq از پایگاه داده ی خودم backup بگیرم در صورت امکان منو راهنمایی کنید خیلی خیلی ممنون

صفحه 1 از 2 12 آخرآخر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •