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

نام تاپیک: آموزش LINQ (از ابتدا تا انتها)

  1. #1

    Thumbs up آموزش LINQ (از ابتدا تا انتها)

    با درود
    در این تاپیک قصد دارم چگونگی پرس و جو کردن (کوئری گرفتن) از Object ، XML و بانک های اطلاعاتی را آموزش دهم.
    منبع این آموزش کتاب زیر است:

    Professional ASP.NET 3.5 In C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎ and VB

    by Bill Evjen , Scott Hanselman , Devin Rader
    »» توجه داشته باشید که این تاپیک با گذشت مدت زمان اندکی ، کامل خواهد شد.
    »» در پایان PDF و نمونه کدها به صورت یکجا برای دانلود گذاشته خواهد شد.
    شاد و پیروز باشید.

    -------------------------------------------------------------------------------------------------------------------------------
    خواهشمند است در این تاپیک از ارسال پست های بی محتوا خود داری کنید.
    برای تشکر و ارزش یابی پست ها از دکمه های "" و "آیا این پاسخ را مفید ارزیابی می کنید؟ | " استفاده کنید.
    دوستانی که اظهار نظر خاصی در رابطه با این تاپیک دارند پیام خصوصی برای اینجانب ارسال کنند.
    ------------------------------------------------------------------------------------------------------------------------------
    »» پست های آموزش در این تاپیک :
    »»» توجه فایل های ضمیمه که در انتهای هر پست آموزشی بود حذف شد و به طوره یک جا در ضمیمه برای دانلود گذاشته شده است.
    پست 2 || مقدمه : پرس و جو کردن با LINQ
    LINQ به Objects
    روش پرس و جوی سنتی (بدون استفاده از LINQ)
    پست 08 || مقدمه ای بر LINQ به Object | روش پرس و جوی سنتی (بدون استفاده از LINQ) | مثال 1 : ایجاد کلاس پایه | مثال 2 : ایجاد یک پرس و جوی ساده | مثال 3 : فیلتر کردن لیست فیلم ها
    پست 09 || مثال 3 : فیلتر کردن لیست فیلم ها
    پست 10 || مثال 4 : پروه بندی و مرتب سازی فهرست فیلم ها
    جایگزین کردن LINQ به جای روش های سنتی
    پست 11 || جایگزین کردن LINQ به جای روش های سنتی | اضافه کردن فضا نام LINQ
    پست 11 || مثال 5 : ایجاد پرس و جو با LINQ
    پست 12 || مثال 6 : ایجاد طرح های سفارشی با LINQ | مثال 7 : تغییر نام ستون ها
    پست 13 || مثال 8 : مرتب سازی داده ها با استفاده از LINQ
    پست 14 || فیلتر کردن پرس و جو ها | مثال 9 : اضافه کردن فیلتر (شرط) در پرس و جو های LINQ | مثال 10 : اضافه کردن دو شرط در یک پرس و جو
    ست 17 || گروه بندی داده ها مثال 11 : گروه بندی داده ها با استفاده از پرس و جوی LINQ
    پست 18 || اپراتور های دیگر در LINQ | مثال 12 : استفاده از اپراتور ها در پرس و جو های LINQ
    پست 19 || پیوند در LINQ | مثال 13 : کلاس ژانر | مثال 14 : برگرداندن مجموعه ی ژانر ها | مثال 15 : پیوند لیست ژانر و لیست فیلم با استفاده از LINQ
    پست 20 || صفحه بندی با استفاده از LINQ | مثال 16 : صفحه بندی ساده و با استفاده از متد های LINQ
    LINQ به XML
    پست 21 || LINQ به XML | مثال 17 : ایجاد یک فایل XML که حاوی اطلاعات فیلم | مثال 18 : یک پرس و جوی ساده بر روی فایل های XML را با استفاده از LINQ
    پست 22 || مثال 19 : مشخص کردن نوع عناصر XML با استفاده از LINQ
    پست 23 || join دادهای XML با استفاده از LINQ | مثال 20 : فایل XML ژانر ها | مثال 21 : join دادهای XML با استفاده از LINQ
    LINQ به SQL
    پست 24 || مقدمه ای بر LINQ به SQL
    پست 25 || ادامه LINQ to SQL | مثال 22 : ایجاد یک data context جدید | مثال 23 : پرس و جو گرفتن از داده های فیلم در LINQ to SQL
    پست 35 || ادامه LINQ to SQL | مثال 24 : نوشتن پرس و جوی LINQ به SQL در پنجره ی Output | مثال 9-26 : گروه بندی داده ها توسط LINQ به SQL


    یک نمونه کار با LINQ to SQL
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله raziee : جمعه 12 شهریور 1389 در 21:22 عصر دلیل: اصلاح لینک ها
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  2. #2

    Post مقدمه : پرس و جو کردن با LINQ

    پرس و جو کردن با LINQ
    LINQ(مخفف Language Integrated Query و به معنای زبان پرس و جوی یکپارچه) تکنولوژی است که در دات نت 3.5 معرفی شده است.
    LINQ برای پر کردن شکافی های موجود در زبان های دات نت طراحی شده است ، که توسعه زبان های شیئ گرا را کامل تر و قوی تر می سازد. LINQ زبانی شبیه به SQL است که با ترکیبی مخصوص برای عملیات پرس و جو طراحی شده است.
    با معرفی LINQ در دات نت ، برای اولین بار پرس و جو (کوئری) مفهوم کلاس را در دات نت پیدا می کند. مستقل از اینکه از شیئ(object) ، XML و یا داده ها (data) کوئری گرفته شود.
    LINQ شامل پرس و جوهایی برای کار کردن با سه نوع داده اساسی و پایه ای زیر است :
    1. LINQ به Objects
    2. LINQ به XML ( یا XLINQ)
    3. LINQ به SQL ( یا DLINQ)
    هر نوع از این پرس و جوها قابلیت های خاصی را ارائه می دهند و هر پرس و جو برای یک سورس خاص طراحی شده است.
    در این تاپیک ، بنده تلاش میکنم تا هر سه نوع را آموزش دهم و شما قادرخواهید بود عملیات پرس و جوی خود را با LINQ ساده کنید.
    همچنین بعضی از ویژگیهای زبان جدید از CLR دات نت را استفاده خواهیم کرد تا پرس و جوهای LINQ را ایجاد کنیم ، علاوه بر این کتابخانه هایی برای پشتیبانی از LINQ به ویژوال استودیو 2008 اضافه شده است.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  3. #3
    کاربر دائمی آواتار Microsoft.net
    تاریخ عضویت
    آبان 1382
    محل زندگی
    مشهد
    پست
    584

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    خوبه حداقل فایده خوندن این تاپیک این بود که معنی از ابتدا تا انتها رو هم فهمیدیم !

  4. #4
    کاربر دائمی
    تاریخ عضویت
    شهریور 1382
    محل زندگی
    هلند
    پست
    1,709

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    نقل قول نوشته شده توسط Microsoft.net مشاهده تاپیک
    خوبه حداقل فایده خوندن این تاپیک این بود که معنی از ابتدا تا انتها رو هم فهمیدیم !
    سلام
    دوستان بحث جالبیه لطفا فقط از دکمه تشکر استفاده کنید و هیچ تاپیکی در این بخش باز نکنید تا بتوانیم خوب استفاده کنیم ( با توجه به کمبود منابع فارسی در این زمینه )
    لطفا"

  5. #5
    کاربر دائمی آواتار hp1361
    تاریخ عضویت
    دی 1384
    محل زندگی
    تهران
    پست
    750

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    سام دوست عزیز آقای Raziee

    به نظرم اگه همون ابتدا چند تا از مشکلاتی که وجود داشت و حالا به کمک LINQ میشه به سادگی ازش گذشت رو بیان کنید ، خواننده بیشتر راغب میشه که بدونه این مطالب جدید چه چیزی رو در نهایت یادش خواهد داد.

    موفق و پیروز باشی

  6. #6

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    خوبه حداقل فایده خوندن این تاپیک این بود که معنی از ابتدا تا انتها رو هم فهمیدیم !
    شما بهتره قبل از فهمیدن هرچیزی بفهمید که اگه یه پستی رو میخونید اون رو درست و کامل بخونید بعد برید سراغ یادگیری های دیگتون.
    توجه داشته باشید که این تاپیک با گذشت مدت زمان اندکی کامل خواهد شد.
    همونطور که گفتم این تاپیک با گذشت زمان کوتاهی کامل خواهد شد.
    توقع ندارین که یک شبه بشینم و ترجمه کنم و تایپ کنم و این جا بزارم.
    -----------
    دوستان بحث جالبیه لطفا فقط از دکمه تشکر استفاده کنید و هیچ تاپیکی در این بخش باز نکنید
    ممنون از یاد آوریتون.
    همونطور که دوستمون گفتند از ارسال پست های بی محتوا خود داری کنید.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  7. #7

    Post LINQ به Objects

    LINQ به Objects
    اولین و ابتدایی ترین نوع LINQ ، LINQ به Objects است. با کمک آن شما قادر خواهید بود تا بر روی هر enumerable object (هر شیئ که بوسیله ی واسط کاربری IEnumerable پیاده سازی می شود) عملیات پرس و جوی پیچیده را انجام دهید.
    در حالی که ایجاد اشیائ ترجمه نشده (enumerable objects) که بتوان از آن کوئری گرفت و یا آن را مرتب کرد اندیشه جدیدی در دات نت نیست اما انجام چنین کاری در نسخه های قبل از ، 3.5 معمولا نیازمند مقدار قابل توجهی کدنویسی بود. اغلب کد های نوشته شده در نهایت پیچیده است و خواندن ، درک و توسعه آن توسط توسعه دهندگان دیگر سخت و دشوار است.
    روش پرس و جوی سنتی(بدون استفاده از LINQ
    به منظور درک بهتر توانایی LINQ در بهبود بخشیدن پرس و جو ها ، نیاز است که شما نحوه ی پرس و جو گرفتن بدون LINQ را بدانید.
    مثال های 1 تا 4 مثال هایی هستند که پرس و جو هایی را بدون استفاده از LINQ ایجاد کردند و مشکلات آن ها را بررسی خواهیم کرد.
    مثال 1 یک کلاس فیلم ساده که شما میتوانید به عنوان پایه از آن استفاده کنید را نشان میدهد:
    کد های VB.NET

    Imports Microsoft.VisualBasic
    Public Class Movie
    Private _title As String
    Private _director As String
    Private _genre As Integer
    Private _runtime As Integer
    Private _releasedate As DateTime
    Public Property Title() As String
    Get
    Return _title
    End Get
    Set(ByVal value As String)
    _title = value
    End Set
    End Property
    Public Property Director() As String
    Get
    Return _director
    End Get
    Set(ByVal value As String)
    _director = value
    End Set
    End Property
    Public Property Genre() As Integer
    Get
    Return _genre
    End Get
    Set(ByVal value As Integer)
    _genre = value
    End Set
    End Property
    Public Property Runtime() As Integer
    Get
    Return _runtime
    End Get
    Set(ByVal value As Integer)
    _runtime = value
    End Set
    End Property
    Public Property ReleaseDate() As DateTime
    Get
    Return _releasedate
    End Get
    Set(ByVal value As DateTime)
    _releasedate = value
    End Set
    End Property
    End Class

    کد های C-Sharp

    using System;
    public class Movie
    {
    public string Title { get; set; }
    public string Director { get; set; }
    public int Genre { get; set; }
    public int RunTime { get; set; }
    public DateTime ReleaseDate { get; set; }
    }

    این یک کلاس ساده است که در طول این قسمت از آن استفاده می شود.
    حالا که یک کلاس پایه برای کار کردن داریم بیایید نحوه ی استفاده از آن را بدون LINQ ببینیم.
    مثال 2 چگونگی ایجاد یک لیست عمومی فیلم و اتصال آن به گریدویو در ASP.NET را نشان میدهد:
    <%@ Page Language="VB" %>
    <%@ Import Namespace="System.Collections.Generic" %>
    <script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Me.GridView1.DataSource = movies
    Me.GridView1.DataBind()
    End Sub
    Public Function GetMovies() As List(Of Movie)
    Dim movies As Movie() = { _
    New Movie With {.Title = "Shrek", .Director = "Andrew Adamson", _
    .Genre = 0, .ReleaseDate = DateTime.Parse("5/16/2001"),
    .Runtime = 89}, _
    New Movie With {.Title = "Fletch", .Director = "Michael Ritchie", _
    .Genre = 0, .ReleaseDate = DateTime.Parse("5/31/1985"),
    .Runtime = 96}, _
    New Movie With {.Title = "Casablanca", .Director = "Michael Curtiz", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("1/1/1942"),
    .Runtime = 102}, _
    New Movie With {.Title = "Batman", .Director = "Tim Burton", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("6/23/1989"),
    .Runtime = 126}, _
    New Movie With {.Title = "Dances with Wolves",
    .Director = "Kevin Costner", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("11/21/1990"),
    .Runtime = 180}, _
    New Movie With {.Title = "Dirty Dancing", .Director = "Emile Ardolino", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("8/21/1987"),
    .Runtime = 100}, _
    New Movie With {.Title = "The Parent Trap", .Director = "Nancy Meyers", _
    .Genre = 0, .ReleaseDate = DateTime.Parse("7/29/1998"),
    .Runtime = 127}, _
    New Movie With {.Title = "Ransom", .Director = "Ron Howard", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("11/8/1996"),
    .Runtime = 121}, _
    New Movie With {.Title = "Ocean’s Eleven", .Director = "Steven Soderbergh", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("12/7/2001"),
    .Runtime = 116}, _
    New Movie With {.Title = "Steel Magnolias", .Director = "Herbert Ross", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("11/15/1989"),
    .Runtime = 117}, _
    New Movie With {.Title = "Mystic Pizza", .Director = "Donald Petrie", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("10/21/1988"),
    .Runtime = 104}, _
    New Movie With {.Title = "Pretty Woman", .Director = "Garry Marshall", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("3/23/1990"),
    .Runtime = 119}, _
    New Movie With {.Title = "Interview with the Vampire",
    .Director = "Neil Jordan", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("11/11/1994"),
    .Runtime = 123}, _
    New Movie With {.Title = "Top Gun", .Director = "Tony Scott", _
    .Genre = 2, .ReleaseDate = DateTime.Parse("5/16/1986"),
    .Runtime = 110}, _
    New Movie With {.Title = "Mission Impossible",
    .Director = "Brian De Palma", _
    .Genre = 2, .ReleaseDate = DateTime.Parse("5/22/1996"),
    .Runtime = 110}, _
    New Movie With {.Title = "The Godfather",
    .Director = "Frabarnamenevis Ford Coppola", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("3/24/1972"),
    .Runtime = 175}, _
    New Movie With {.Title = "Carlito’s Way", .Director = "Brian De Palma", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("11/10/1993"),
    .Runtime = 144}, _
    New Movie With {.Title = "Robin Hood: Prince of Thieves", _
    .Director = "Kevin Reynolds", .Genre = 1, _
    .ReleaseDate = DateTime.Parse("6/14/1991"), .Runtime = 143}, _
    New Movie With {.Title = "The Haunted", .Director = "Robert Mandel", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("5/6/1991"),
    .Runtime = 100}, _
    New Movie With {.Title = "Old School", .Director = "Todd Phillips", _
    .Genre = 0, .ReleaseDate = DateTime.Parse("2/21/2003"),
    .Runtime = 91}, _
    New Movie With {.Title = "Anchorman: The Legend of Ron Burgundy", _
    .Director = "Adam McKay", .Genre = 0, _
    .ReleaseDate = DateTime.Parse("7/9/2004"),
    .Runtime = 94}, _
    New Movie With {.Title = "Bruce Almighty", .Director = "Tom Shadyac", _
    .Genre = 0, .ReleaseDate = DateTime.Parse("5/23/2003"),
    .Runtime = 101}, _
    New Movie With {.Title = "Ace Ventura: Pet Detective", _
    .Director = "Tom Shadyac", .Genre = 0, _
    .ReleaseDate = DateTime.Parse("2/4/1994"),
    .Runtime = 86}, _
    New Movie With {.Title = "Goonies", .Director = "Richard Donner", _
    .Genre = 0, .ReleaseDate = DateTime.Parse("6/7/1985"),
    .Runtime = 114}, _
    New Movie With {.Title = "Sixteen Candles", .Director = "John Hughes", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("5/4/1984"),
    .Runtime = 93}, _
    New Movie With {.Title = "The Breakfast Club", .Director = "John Hughes", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("2/15/1985"),
    .Runtime = 97}, _
    New Movie With {.Title = "Pretty in Pink", .Director = "Howard Deutch", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("2/28/1986"),
    .Runtime = 96}, _
    New Movie With {.Title = "Weird Science", .Director = "John Hughes", _
    .Genre = 0, .ReleaseDate = DateTime.Parse("8/2/1985"),
    .Runtime = 94}, _
    New Movie With {.Title = "Breakfast at Tiffany’s", .Director =
    "Blake Edwards", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("10/5/1961"),
    .Runtime = 115}, _
    New Movie With {.Title = "The Graduate", .Director = "Mike Nichols", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("4/2/1968"),
    .Runtime = 105}, _
    New Movie With {.Title = "Dazed and Confused", .Director = "Richard
    Linklater", _
    .Genre = 0, .ReleaseDate = DateTime.Parse("9/24/1993"),
    .Runtime = 103}, _
    New Movie With {.Title = "Arthur", .Director = "Steve Gordon", _
    .Genre = 1, .ReleaseDate = DateTime.Parse("9/25/1981"),
    .Runtime = 97}, _
    New Movie With {.Title = "Monty Python and the Holy Grail", _
    .Director = "Terry Gilliam", .Genre = 0, _
    .ReleaseDate = DateTime.Parse("5/10/1975"),
    .Runtime = 91}, _
    New Movie With {.Title = "Dirty Harry", .Director = "Don Siegel", _
    .Genre = 2, .ReleaseDate = DateTime.Parse("12/23/1971"),
    .Runtime = 102} _
    }
    Return New List(Of Movie)(movies)
    End Function
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title>My Favorite Movies</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView ID="GridView1" runat="server">
    </asp:GridView>
    </div>
    </form>
    </body>
    </html>


    کد های C-Sharp

    <script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();
    this.GridView1.DataSource = movies;
    this.GridView1.DataBind();
    }
    public List<Movie> GetMovies()
    {
    return new List<Movie> {
    new Movie { Title="Shrek", Director="Andrew Adamson", Genre=0,
    ReleaseDate=DateTime.Parse("5/16/2001"), RunTime=89 } ,
    new Movie { Title="Fletch", Director="Michael Ritchie", Genre=0,
    ReleaseDate=DateTime.Parse("5/31/1985"), RunTime=96 } ,
    new Movie { Title="Casablanca", Director="Michael Curtiz", Genre=1,
    ReleaseDate=DateTime.Parse("1/1/1942"), RunTime=102 } ,
    new Movie { Title="Batman", Director="Tim Burton", Genre=1,
    ReleaseDate=DateTime.Parse("6/23/1989"), RunTime=126 } ,
    new Movie { Title="Dances with Wolves", Director="Kevin Costner",Genre=1,
    ReleaseDate=DateTime.Parse("11/21/1990"), RunTime=180 } ,
    new Movie { Title="Dirty Dancing", Director="Emile Ardolino", Genre=1,
    ReleaseDate=DateTime.Parse("8/21/1987"), RunTime=100 } ,
    new Movie { Title="The Parent Trap", Director="Nancy Meyers", Genre=0,
    ReleaseDate=DateTime.Parse("7/29/1998"), RunTime=127 } ,
    new Movie { Title="Ransom", Director="Ron Howard", Genre=1,
    ReleaseDate=DateTime.Parse("11/8/1996"), RunTime=121 } ,
    new Movie { Title="Ocean’s Eleven", Director="Steven
    Soderbergh", Genre=1,
    ReleaseDate=DateTime.Parse("12/7/2001"), RunTime=116 } ,
    new Movie { Title="Steel Magnolias", Director="Herbert Ross", Genre=1,
    ReleaseDate=DateTime.Parse("11/15/1989"), RunTime=117 } ,
    new Movie { Title="Mystic Pizza", Director="Donald Petrie", Genre=1,
    ReleaseDate=DateTime.Parse("10/21/1988"), RunTime=104 } ,
    new Movie { Title="Pretty Woman", Director="Garry Marshall", Genre=1,
    ReleaseDate=DateTime.Parse("3/23/1990"), RunTime=119 } ,
    new Movie { Title="Interview with the Vampire",
    Director="Neil Jordan", Genre=1,
    ReleaseDate=DateTime.Parse("11/11/1994"), RunTime=123 } ,
    new Movie { Title="Top Gun", Director="Tony Scott", Genre=2,
    ReleaseDate=DateTime.Parse("5/16/1986"), RunTime=110 } ,
    new Movie { Title="Mission Impossible", Director="Brian De Palma", Genre=2,
    ReleaseDate=DateTime.Parse("5/22/1996"), RunTime=110 } ,
    new Movie { Title="The Godfather", Director="Frabarnamenevis Ford Coppola",
    Genre=1, ReleaseDate=DateTime.Parse("3/24/1972"), RunTime=175 } ,
    new Movie { Title="Carlito’s Way", Director="Brian De Palma",
    Genre=1, ReleaseDate=DateTime.Parse("11/10/1993"), RunTime=144 } ,
    new Movie { Title="Robin Hood: Prince of Thieves",
    Director="Kevin Reynolds",
    Genre=1, ReleaseDate=DateTime.Parse("6/14/1991"), RunTime=143 } ,
    new Movie { Title="The Haunted", Director="Robert Mandel",
    Genre=1, ReleaseDate=DateTime.Parse("5/6/1991"), RunTime=100 } ,
    new Movie { Title="Old School", Director="Todd Phillips",
    Genre=0, ReleaseDate=DateTime.Parse("2/21/2003"), RunTime=91 } ,
    new Movie { Title="Anchorman: The Legend of Ron Burgundy",
    Director="Adam McKay", Genre=0,
    ReleaseDate=DateTime.Parse("7/9/2004"), RunTime=94 } ,
    new Movie { Title="Bruce Almighty", Director="Tom Shadyac",
    Genre=0, ReleaseDate=DateTime.Parse("5/23/2003"), RunTime=101 } ,
    new Movie { Title="Ace Ventura: Pet Detective", Director="Tom Shadyac",
    Genre=0, ReleaseDate=DateTime.Parse("2/4/1994"), RunTime=86 } ,
    new Movie { Title="Goonies", Director="Richard Donner",
    Genre=0, ReleaseDate=DateTime.Parse("6/7/1985"), RunTime=114 } ,
    new Movie { Title="Sixteen Candles", Director="John Hughes",
    Genre=1, ReleaseDate=DateTime.Parse("5/4/1984"), RunTime=93 } ,
    new Movie { Title="The Breakfast Club", Director="John Hughes",
    Genre=1, ReleaseDate=DateTime.Parse("2/15/1985"), RunTime=97 } ,
    new Movie { Title="Pretty in Pink", Director="Howard Deutch",
    Genre=1, ReleaseDate=DateTime.Parse("2/28/1986"), RunTime=96 } ,
    new Movie { Title="Weird Science", Director="John Hughes",
    Genre=0, ReleaseDate=DateTime.Parse("8/2/1985"), RunTime=94 } ,
    new Movie { Title="Breakfast at Tiffany’s", Director="Blake Edwards",
    Genre=1, ReleaseDate=DateTime.Parse("10/5/1961"), RunTime=115 } ,
    new Movie { Title="The Graduate", Director="Mike Nichols",
    Genre=1, ReleaseDate=DateTime.Parse("4/2/1968"), RunTime=105 } ,
    new Movie { Title="Dazed and Confused", Director="Richard Linklater",
    Genre=0, ReleaseDate=DateTime.Parse("9/24/1993"), RunTime=103 } ,
    new Movie { Title="Arthur", Director="Steve Gordon",
    Genre=1, ReleaseDate=DateTime.Parse("9/25/1981"), RunTime=97 } ,
    new Movie { Title="Monty Python and the Holy Grail",
    Director="Terry Gilliam",
    Genre=0, ReleaseDate=DateTime.Parse("5/10/1975"), RunTime=91 } ,
    new Movie { Title="Dirty Harry", Director="Don Siegel",
    Genre=2, ReleaseDate=DateTime.Parse("12/23/1971"), RunTime=102 }
    };
    }
    </script>


    این مثال ساده را در ASP.NET نوشتیم که شامل یک گریدویو برای نمایش اطلاعات عمومی فیلم است. آن را اجرا کنید و نتیجه را ببینید.
    توجه داشته باشید که استفاده از کتابخانه ی زیر را فراموش نکنید.
    using System.Collections.Generic;


    در مثال بعدی یک فیلترینگ ساده را بدون LINQ بررسی خواهیم کرد.
    آخرین ویرایش به وسیله raziee : چهارشنبه 18 آذر 1388 در 19:42 عصر
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  8. #8

    Post مثال 3 : فیلتر کردن لیست فیلم

    در مثال قبلی نحوه ی نمایش اطلاعات از نوع Object را بدون استفاده از LINQ یاد گرفتیم در این مثال معمولی ترین راه برای فیلتر کردن داده ها را یاد میگیریم و مشکلات آن را بررسی میکنیم.
    مثال 3 : فیلتر کردن لیست فیلم
    به عنوان نمونه برای فیلتر کردن داده ها و نمایش فیلم ها در یک ژانر خاص نیاز به ایجاد یک مجموعه موقت جدید و استفاده از حلقه foreach برای نمایش اطلاعات است.
    کد های VB.NET
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Dim query As New List(Of Movie)()
    For Each m In movies
    If (m.Genre = 0) Then
    query.Add(m)
    End If
    Next
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C-Sharp

    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();
    var query = new List<Movie>();
    foreach (var m in movies)
    {
    if (m.Genre == 0) query.Add(m);
    }
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    ممکن است این روش آسان به نظر رسیده و کفایت کننده باشد اما با این حال شما ملزم به تعریف چیزی هستید که می خواهید انجام دهید. (پیدا کردن تمام فیلم ها در این ژانر) علاوه بر آن شما باید به طور واضح آن را تعریف کنید (استفاده از حلقه foreach و یک مجموعه به طور موقت)
    علاوه بر این ، برای نمایش داده ها با پرس و جوی پیچیده تر که شامل داده های گروه بندی شده و یا مرتب شده باشد ، باید چه کاری باید انجام داد و چه کد هایی باید نوشت؟
    برای انجام چنین کاری کد ها بسیار پیچیده خواهند شدکه آن ها را در مثال بعدی خواهید دید.
    آخرین ویرایش به وسیله raziee : چهارشنبه 18 آذر 1388 در 19:42 عصر
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  9. #9

    Post مثال 4 : گروه بندی و مرتب سازی فهرست فیلم ها

    در مثال قبلی فیلترینگ ساده اطلاعات را نشان دادیم و در این مثال با پرس و جوی پیچیده تر که شامل داده های گروه بندی شده و یا مرتب شده است را نشان خواهیم داد.
    مثال 4 : گروه بندی و مرتب سازی فهرست فیلم ها
    کد های VB.NET

    Public Class Grouping
    Private _genre As Integer
    Private _movieCount As Integer
    Public Property Genre() As Integer
    Get
    Return _genre
    End Get
    Set(ByVal value As Integer)
    _genre = value
    End Set
    End Property
    Public Property MovieCount() As Integer
    Get
    Return _movieCount
    End Get
    Set(ByVal value As Integer)
    _movieCount = value
    End Set
    End Property
    End Class
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Dim groups As New Dictionary(Of String, Grouping)
    For Each m In movies
    If (Not groups.ContainsKey(m.Genre)) Then
    groups(m.Genre) = _
    New Grouping With {.Genre = m.Genre, .MovieCount = 0}
    End If
    groups(m.Genre).MovieCount = groups(m.Genre).MovieCount + 1
    Next
    Dim results As New List(Of Grouping)(groups.Values)
    results.Sort(AddressOf MovieSort)
    Me.GridView1.DataSource = results
    Me.GridView1.DataBind()
    End Sub
    Private Function MovieSort(ByVal x As Grouping, ByVal y As Grouping) As Integer
    Return IIf(x.MovieCount > y.MovieCount, -1, IIf(x.MovieCount
    < y.MovieCount, 1, 0))
    End Function

    کد های C-Sharp

    public class Grouping
    {
    public int Genre { get; set; }
    public int MovieCount { get; set; }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();
    Dictionary<int, Grouping> groups = new Dictionary<int, Grouping>();
    foreach (Movie m in movies)
    {
    if (!groups.ContainsKey(m.Genre))
    {
    groups[m.Genre] = new Grouping { Genre = m.Genre, MovieCount = 0 };
    }
    groups[m.Genre].MovieCount++;
    }
    List<Grouping> results = new List<Grouping>(groups.Values);
    results.Sort(delegate(Grouping x, Grouping y)
    {
    return
    x.MovieCount > y.MovieCount ? -1 :
    x.MovieCount < y.MovieCount ? 1 :
    0;
    });
    this.GridView1.DataSource = results;
    this.GridView1.DataBind();
    }

    برای گروه بندی فیلم ها در هر ژانر و شمارش تعداد فیلم در هر ژانر ، نیازمند ایجاد یک کلاس جدید ، ایجاد یک فرهنگ لغت(Dictionary) و اجرای آن در یک نمونه هستیم . میبینیم که برای انجام چنین کار ساده ای کد ها پیچیده شدند علاوه بر آن منابع بسیاری را درگیر کاری که می خواهید انجام دهید می کنید.
    نحوه یک پرس و جوی کمی پیچیده اینگونه بود حالا شما فکر میکنید از همین روش ها استفاده میکنید و یا به دنبال راه کار های دیگری هستید که از کد ها و منابع کمتری استفاده کند.
    این را در نظر بگیرید : اگر شما مجبور باشید برنامه ای را توسعه دهید که با کدهای آن آشنا نیستید ، چه مدت طول می کشد که با کد ها آشنا شوید تا برنامه را به شکلی که میخواهید تغییر دهید؟
    در پست بعدی روش های سنتی را با استفاده از LINQ خواهیم نوشت.
    آخرین ویرایش به وسیله raziee : چهارشنبه 18 آذر 1388 در 19:42 عصر
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  10. #10

    Post جایگزین کردن LINQ به جای روش های سنتی

    جایگزین کردن LINQ به جای روش های سنتی
    LINQ برای از بین بردن کاستی هایی است که در پرس و جو های قبلی دیدیم. به جای آنکه شما برای رسیدن به هدفتون(پرس و جوهای پیچیده) منابع زیدی رو درگیر کنید و همچنین کدهای زیادی را بنویسید میتوانید از LINQ استفاده کنید. LINQ به شما قدرت میدهد تا به سادگی به آن چیزی که از یک پرس و جو میخواهید برسید بدون آنکه خود را درگیر کنید. دات نت و کامپایلرش تمام کار ها را انجام میدهند و پرس و جو را اجرا میکنند.
    در این پست نگاهی به LINQ داریم و خواهیم دید که چگونه با استفاده از آن میتوان نمایش داده ها را بسیار ساده کرد.
    برای درک سادگی کار ، ما همان مثال های قبلی را که بدون استفاده از LINQ با حجم کد بالا و استفاده از منابع دیگر نوشتیم ، این بار با استفاده از LINQ خواهیم نوشت و خواهیم دید که استفاده از LINQ چگونه باعث آسان تر شده کار ما شد.
    پایه و اساس پرس و جو های LINQ
    برای استفاده از LINQ باید کتابخانه ی مربوطه را به برنامه ی خود اضافه کنید. این کتابخانه در آدرس زیر قرار دارد:

    اضافه کردن فضا نام LINQ

    using System.Linq;

    اضافه کردن این فضای نام امکان دسترسی به تمام عملکرد LINQ را میدهد.
    حالا می توانیم با تغییر کدهای مثال 2 شروع کنیم.
    اگر به یاد داشته باشید ، در آن مثال ما یک نمونه از لیست عمومی فیلم ها را ایجاد و آن را به کنترل گرید ویو متصل کردیم.
    مثال 5 چگونگی تغییر کد ها را با استفاده از LINQ و نمایش اطلاعات آن را در یک گریدویو نشان میدهد.
    مثال 5 : ایجاد پرس و جو با LINQ
    کد های VB :

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Dim query = From m In movies _
    Select m
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C-Sharp :

    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();
    var query = from m in movies
    select m;
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    مثال بالا به سه قسمت تقسیم می شود.
    ابتدا : کد های استفاده شده برای بدست آوردن لیست فیلم ها »» GetMovies()
    سپس : کد های استفاده شده برای ایجاد یک پرس و جوی بسیار ساده LINQ به منظور اتنخاب تمام اطلاعات لیست فیلم ها
    در انتها : اتصال query به گریدویو برای نمایش اطلاعات مورد نظر
    توجه داشته باشید که LINQ از کلمات کلیدی خاصی همچون from و یا select در یک پرس و جو استفاده میکند.
    در Visual Studio 2008 امکاناتی اضافه شده که خطاهای نوشتاری LINQ را به کاربر گزارش می دهد و شما میتوانید خطا های پرس و جو های نوشته شده را به راحتی پیدا کنید و آن ها را رفع کنید.
    در پرس و جو متغیر جدید m تعریف شده است. (نام این متغییر همانند نام تمام متغیر ها انتخابی است.)این متغیر در پرس و جو ها دو کاربرد دارد.
    کاربرد اول : به عنوان منبعی که پرس و جو بر روی آن گرفته شده و بعد از کلمه کلیدی from آورده میشود.(همانند نام جدول در دستورات SQL) که در این مورد به مجموعه ی فیلم ها اشاره می کند. (در مثال 5 ملاحظه کنید)
    کاربرد دوم : در قسمت select یک پرس و جو استفاده میشود و هدف آن انتخاب ستون ها برای نمایش در خروجی است. (در پست بعد ملاحظه خواهید کرد.)
    آخرین ویرایش به وسیله raziee : چهارشنبه 18 آذر 1388 در 19:42 عصر
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  11. #11

    Post ایجاد طرح های سفارشی با LINQ

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

    مثال 6 : ایجاد طرح های سفارشی با LINQ
    کد های VB

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Dim query = From m In movies _
    Select New With {m.Title, m.Genre}
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C-Sharp

    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();
    var query = from m in movies
    select new { m.Title, m.Genre };
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    به نحوه ی استفاده از m توجه کنید ، m برای ایجاد طرحی جدید در پرس و جو به کار گرفته شده است. در خروجی دو ستون عنوان(Title) و ژانر(Genre) نمایش داده شده است.
    شما حتی میتوانید به راحتی عناوین ستون ها را LINQ مشخص کنید.
    برای مثال ، شما ممکن است بخواهید که عنوان ستون Title را به MovieTitle و عنوان ستون Genre را به MovieGenre تغییر دهید.
    با استفاده از LINQ ، انجام چنین کاری به راحتی آب خوردن است. مثال 7 چگونگی این کار را نمایش می دهد.

    مثال 7 : تغییر نام ستون ها
    کدهای VB
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Dim query = From m In movies _
    Select New With {.MovieTitle = m.Title, .MovieGenre = m.Genre}
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C#‎‎‎‎‎

    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();
    var query = from m in movies
    select new { MovieTitle = m.Title, MovieGenre = m. Genre };
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    مثال فوق نمونه ای است که بوسیله آن عناوین ستون ها را به راحتی تغییر یافتند.
    در مثال بعد نحوه ی مرتب سازی به صورت صعودی و نزولی را فرا خواهیم گرفت.
    آخرین ویرایش به وسیله raziee : چهارشنبه 18 آذر 1388 در 19:42 عصر
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  12. #12

    Post مثال 8 : مرتب سازی داده ها با استفاده از LINQ

    مرتب سازی متواند به صورت صعودی و یا نزولی باشد مثال زیر چگونگی انجام این کار را نشان میدهد.
    مثال 8 : مرتب سازی داده ها با استفاده از LINQ
    کد های VB

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Dim query = From m In movies _
    Order By m.Title Descending _
    Select New With {.MovieTitle = m.Title, .MovieGenre = m.Genre}
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کدهای C#‎‎‎‎‎‎

    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();
    var query = from m in movies
    orderby m.Title descending
    select new { MovieTitle = m.Title, MovieGenre = m. Genre };
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    یکی دیگر از ویژگی بزرگ LINQ ، syntax آن است که بهبود چشمگیر در خوانایی و understandability دارد.
    در LINQ به سادگی میتوانید پرس و جو های خود را پیاده سازی کنید. شما کد های بسیار ساده ای را به کامپایلر میدهید اما خروجی را به بهترین شکل دریافت خواهید کرد.
    همانطور که میبینید در LINQ با نوشتن کدهای بسیار کوتاهی ، نتیجه را تغییر میدهیم. این در حالی است که بدون LINQ انجام چنین کاری نیازمند نوشتن کد های طولانی و پیچیده است.
    علاوه بر مثال بالا شما میتوانید از متد Where, Count, Min, Max و بسیاری متدهای دیگر در LINQ استفاده کنید.
    در پست بعدی پرس و های فیلتر شده را بررسی خواهیم کرد.
    آخرین ویرایش به وسیله raziee : چهارشنبه 18 آذر 1388 در 19:42 عصر
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  13. #13

    Post فیلتر کردن پرس و جو ها

    فیلتر کردن پرس و جو ها
    LINQ از فیلترینگ هم پشتیبانی میکند . همانطور که قبلا گفتیم LINQ ساختاری شبیه به SQL دارد ، برای شرط گذاری و فیلتر کردن پرس و جو ها از کلمه ی کلیدی where استفاده میشود.
    در مثال شماره 3 دیدم که برای فیلتر کردن فیلم ها در یک ژانر خاص بدون استفاده از LINQ باید چه کد هایی را بنویسیم. اینک همان مثال را با استفاده از LINQ بازنویسی میکنیم و شما راحتی کار با LINQ را احساس خواهید کرد.

    مثال 9 : اضافه کردن فیلتر (شرط) در پرس و جو های LINQ
    کد های VB.NET

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Dim query = From m In movies _
    Where m.Genre = 0 _
    Select m
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C#‎‎‎‎
    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();
    var query = from m in movies
    where m.Genre==0
    select m;
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }


    دیدم که چگونه با اضافه کردن تنها چند کلمه در پرس و جو (where m.Genre==0) نتیجه تغییر کرد و فقط فیلم هایی که مقدار ژانر آنها برابر با 0 بود نمایش داده شدند.
    شما میتوانید در پرس و جو های خود بیش از یک شرط قرار دهید (همانند SQL ) مثال 10 چگونگی اشن کار را به شما نشان میدهد.

    مثال 10 : اضافه کردن دو شرط در یک پرس و جو
    کد های VB.NET
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Dim query = From m In movies _
    Where m.Genre = 0 And m.Runtime > 92 _
    Select m
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C#‎‎‎‎
    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();
    var query = from m in movies
    where m.Genre == 0 && m.RunTime > 92
    select m;
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    مثال بالا شامل دو شرط است که برای محدود کردن لیست فیلم ها در یک ژانر خاص و زمان اجرا فیلم به کار میرود.
    در پست بعدی گروه بندی داده ها را مطرح خواهیم کرد.
    آخرین ویرایش به وسیله raziee : چهارشنبه 18 آذر 1388 در 19:42 عصر
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  14. #14

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    ببخشید دوست عزیز من تفاوتهای دو تکنولوژی ado.net و linq رو میخواستم

  15. #15

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    ببخشید دوست عزیز من تفاوتهای دو تکنولوژی ado.net و linq رو میخواستم
    با سلام.
    ADO.NET برای کار کردن با پایگاه داده است. که در کتابخانه ی زیر قرار دارد.
    using System.Data;

    و البته کتابخانه هایی که از این کتابخانه مشاق شده اند.
    اما LINQ صرفا برای استفاده در بانک های اطلاعاتی نیست و می تواند بر روی داده هایی از نوع XMLو Object هم پیاده سازی شود.
    ADO.NET روش ها و متد هایی را برای کار با بانک های اطلاعاتی فراهم میکند اما LINQ توانایی پرس و جو ها (کوئری گرفتن) را بالا میبرد در عین راحتی(کد های بسیار کم) و خوانایی بالای کد.
    شاد باشید
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  16. #16

    Post گروه بندی داده ها

    گروه بندی داده ها
    در LINQ گروه بندی داده ها بسیار ساده است ، استفاده از این دستور نیز همانند استفاده آن در SQL می باشد.
    برای نشان دادن چگونگی استفاده از این دستور و نیز راحتی کار با LINQ ما مثال شماره 4 را که قبلا با کد های زیاد و پیچیده ای نوشته بودیم را با استفاده از LINQ بازنویسی میکنیم. مثال زیر چگونگی این کار را به شما نمایش می دهد.
    مثال 11 : گروه بندی داده ها با استفاده از پرس و جوی LINQ
    کد های VB.NET
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Dim query = From m In movies _
    Group By m.Genre Into g = Group, Count()
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C#‎‎‎‎
    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();
    var query = from m in movies
    group m by m.Genre into g
    select new { Genre = g.Key, Count = g.Count() };
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    در این پرس و جو با استفاده از کلمه کلیدی group فیلم ها را بر اسای ژانرشان گروه بندی کردیم.
    علاوه بر این ، به دلیل اینکه در گروه بندی داده ها در خروجی چیزی نمایش داده نمیشود با استفاده از ایجاد طرح در پرس و جو ها ، پرس و جو را سفارشی کردیم(رجوع به مثال شماره 6) و شماره ی ژانر و تعداد فیلم های در این گروه را برای نمایش در خروجی آوردیم.
    استفاده از LINQ برای انجام چنین کاری(گروه بندی داده ها) به شما کمک می کند تا کد های نوشته شده برای رسیدن به هدفتان را بسیار کاهش دهید.
    با مقایسه مثال 4 (که در آن گروه بندی داده ها را با روش سنتی انجام دادیم) و مثال 11 که همان کار را با استفاده از LINQ نوشتیم ملاحظه میکنید که تعداد خطوط نوشته شده برای این کار از 18 خط کد ، به 3 خط کد رسیده و علاوه بر آن خوانایی و وضوح کد ها افزایش پیدا کرده است.
    در مثال بعدی استفاده از اپراتورهایی نظیر Count, Min, Max, Average, و Sumرا در LINQ نشان خواهیم داد.
    آخرین ویرایش به وسیله raziee : چهارشنبه 18 آذر 1388 در 19:42 عصر
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  17. #17

    Post اپراتور های دیگر در LINQ

    اپراتور های دیگر در LINQ
    علاوه بر انتخاب(selection) ، فیلترینگ (filtering) و گروه بندی(grouping) ، LINQ همچنین شامل اپراتور های دیگری است که شما میتوانید آنها را در پرس و جو های خود به کار بگیرید.
    در SQL از بسیاری از این اپراتور ها قبلا استفاده کردید و برای شما آشنا هستند. این اپراتور ها عبارت اند از : تعداد (Count) ، کمترین (Min) ، بیشترین (Max) ، میانگین (Average) و جمع (Sum) که در مثال زیر آورده شده اند.
    مثال 12 : استفاده از اپراتور ها در پرس و جو های LINQ
    کد های VB.NET

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Me.TotalMovies.Text = movies.Count.ToString()
    Me.LongestRuntime.Text = movies.Max(Function(m) m.Runtime).ToString()
    Me.ShortestRuntime.Text = movies.Min(Function(m) m.Runtime).ToString()
    Me.SumRuntime.Text = movies.Sum(Function(m) m.Runtime).ToString()
    Me.AverageRuntime.Text = movies.Average(Function(m) m.Runtime).ToString()
    End Sub

    کد های C#‎‎‎‎‎‎‎‎‎
    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();

    this.TotalMovies.Text = movies.Count.ToString();
    this.LongestRuntime.Text = movies.Max(m => m.RunTime).ToString();
    this.ShortestRuntime.Text = movies.Min(m => m.RunTime).ToString();
    this.SumRuntime.Text = movies.Sum(m => m.RunTime).ToString();
    this.AverageRuntime.Text = movies.Average(m => m.RunTime).ToString();
    }

    کد های ASP.NET
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title>Listing 12 : Using LINQ query operators</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    Total Movies : <asp:Label ID="TotalMovies" runat="server" /><br />
    Longest Runtime : <asp:Label ID="LongestRuntime" runat="server" /><br />
    Shortest Runtime : <asp:Label ID="ShortestRuntime" runat="server" /><br />
    Sum Runtime : <asp:Label ID="SumRuntime" runat="server" /><br />
    Average Runtime : <asp:Label ID="AverageRuntime" runat="server" /><br />
    </div>
    </form>
    </body>
    </html>

    در این مثال نحوه ی استفاده از اپراتور های تعداد (Count) ، کمترین (Min) ، بیشترین (Max) ، میانگین (Average) و جمع (Sum) را در مجموعه ی فیلم ها نشان میدهد.
    توجه داشته باشید که در این اپراتور ها به غیر از اپراتور تعداد(Count) ، شما باید متدی را فراهم کنید تا این اپراتور ها بر روی فیلدی خاص ، عملیات خود را انجام دهند. این کار با استفاده از یک عبارت که Lambda نامیده میشود انجام می پذیرد.
    در پست بعدی پیوند را در LINQ مطرح خواهیم کرد.
    آخرین ویرایش به وسیله raziee : چهارشنبه 18 آذر 1388 در 19:42 عصر
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  18. #18

    Post پیوند در LINQ

    پیوند در LINQ
    LINQ همچنین از unioning داده ها از مجموعه های مختلف پشتیبانی میکند. (چیزی شبیه به join در SQL)
    برای مثال : در داده هایی که ما تا کنون از آن ها پرس و جو تهیه کردیم تنها قادر بودند ژانر فیلم ها به صورت کد عددیشان نشان دهند. به وسیله "پیوند" میتوانیم در خروجی نام هر ژانر را به جای کد عددیشان نمایش دهیم.
    چنین کاری در LINQ به راحتی امکانپذیر است.
    برای انجام چنین کاری یک کلاس با نام Genre ایجاد خواهیم کرد.
    مثال 13 : کلاس ژانر
    کد های VB.NET

    Public Class Genre
    Private _id As Integer
    Private _name As String
    Public Property ID() As Integer
    Get
    Return _id
    End Get
    Set(ByVal value As Integer)
    _id = value
    End Set
    End Property
    Public Property Name() As String
    Get
    Return _name
    End Get
    Set(ByVal value As String)
    _name = value
    End Set
    End Property
    End Class

    کد های C#‎‎
    public class Genre
    {
    public int ID { get; set; }
    public string Name { get; set; }
    }

    حالا شما باید متد GetGenres را به کد هایتان اضافه کنید تا لیست ژانر ها را برگرداند.

    مثال 14 : برگرداندن مجموعه ی ژانر ها
    کد های VB.Net
    Public Function GetGenres() As List(Of Genre)
    Dim genres As Genre() = { _
    New Genre With {.ID = 0, .Name = "Comedy"}, _
    New Genre With {.ID = 1, .Name = "Drama"}, _
    New Genre With {.ID = 2, .Name = "Action"} _
    }
    Return New List(Of Genre)(genres)
    End Function

    کد های C#‎‎
    public List<Genre> GetGenres()
    {
    return new List<Genre> {
    new Genre { ID=0, Name="Comedy" } ,
    new Genre { ID=1, Name="Drama" } ,
    new Genre { ID=2, Name="Action" }
    };
    }

    سرانجام شما باید رویداد Page Load را به صورت زیر تغییر رهید. این رویداد شامل یک پرس و جو برای برگرداندن لسیت ژانر ها و پیوند آن با لیست فیلم ها است. این تغییرات را در مثال 15 نشان داده شده است.
    مثال 15 : پیوند لیست ژانر و لیست فیلم با استفاده از LINQ
    کد های VB.NET
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Dim genres = GetGenres()
    Dim query = From m In movies Join g In genres _
    On m.Genre Equals g.ID _
    Select New With {.Title = m.Title, .Genre = g.Name}
    GridView1.DataSource = query
    GridView1.DataBind()
    End Sub

    کد های C#‎‎

    همانطور که در مثال بالا میبینید نحوه ی پیوند دو لیست نسبتا ساده است.
    آخرین ویرایش به وسیله raziee : چهارشنبه 18 آذر 1388 در 19:42 عصر
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  19. #19

    Post صفحه بندی با استفاده از LINQ

    صفحه بندی با استفاده از LINQ
    در LINQ بسیار آسان میتوان داده ها را برای استفاده در برنامه های تحت وب، صفحه بندی کرد. این کار با استفاده از دو متد : Skip و Take قابل پیاده سازی است.
    متد Skip تعداد رکورد ها برای پرش را مشخص میکند.
    متد Take مشخص میکند که برای خروجی چه تعداد رکورد برگردانده شوند.
    با استفاده از دو متد Skip و Take شما میتوانید داده های مورد نظرتان را در خروجی نمایش دهید.
    طریقه استفاده از این متد ها در مثال زیر آورده شده است.

    مثال 16 : صفحه بندی ساده و با استفاده از متد های LINQ
    کد های VB.NET
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim movies = GetMovies()
    Dim genres = GetGenres()
    Dim query = (From m In movies _
    Join g In genres On m.Genre Equals g.ID _
    Select New With {m.Title, .Genre = g.Name}).Skip(10).Take(10)
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C#‎‎
    protected void Page_Load(object sender, EventArgs e)
    {
    var movies = GetMovies();
    var genres = GetGenres();
    var query = (from m in movies
    join g in genres on m.Genre equals g.ID
    select new { m.Title, g.Name }).Skip(10).Take(10);
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    بعد از اجرای این مثال مشاهده خواهید کرد که بعد از پرش 10 رکورد ، 10 رکورد در خروجی نشان داده میشود.
    بخش LINQ به Object تمام شد و از پست بعد به سراغ LINQ به XML خواهیم رفت.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  20. #20

    Thumbs up LINQ به XML

    LINQ به XML
    نوع دوم LINQ ، LINQ به XML (یا XLINQ) است. همانطور که از نامش پیداست LINQ به XML برای استفاده از LINQ در پرس و های XML می باشد.
    مطابق با ساختار LINQ ، ساختار LINQ به XML در دات نت نیز به عنوان یک فرمت اساسی گنجانده شده است و توابع موجود را نمیتوان تغییر داد.
    همچنین در هسته مرکزیLINQ ، ساختار LINQ به XML در کتابخانه ی System.Xml.Linq گنجانده شده است.
    در این پست و پست های آینده چگونگی استفاده از پرس و جو های LINQ در XML را به شما نشان خواهیم داد. ما از همان داده های قبلی فیلم به عنوان پایه که در پست های قبلی مورد استفاده قرار گرفت استفاده می کنیم اما این بار آن ها را با XML پیاده سازی می کنیم.
    مثال 17 تبدیل اطلاعات فیلم را در یک سند XML نشان میدهد.

    مثال 17 ایجاد یک فایل XML که حاوی اطلاعات فیلم است.
    <?xml version="1.0" encoding="utf-8" ?>
    <Movies>
    <Movie>
    <Title>Shrek</Title>
    <Director>Andrew Adamson</Director>
    <Genre>0</Genre>
    <ReleaseDate>5/16/2001</ReleaseDate>
    <RunTime>89</RunTime>
    </Movie>
    <Movie>
    <Title>Fletch</Title>
    <Director>Michael Ritchie</Director>
    <Genre>0</Genre>
    <ReleaseDate>5/31/1985</ReleaseDate>
    <RunTime>96</RunTime>
    </Movie>
    <Movie>
    <Title>Casablanca</Title>
    <Director>Michael Curtiz</Director>
    <Genre>1</Genre>
    <ReleaseDate>1/1/1942</ReleaseDate>
    <RunTime>102</RunTime>
    </Movie>
    </Movies>

    برای شروع چگونگی استفاده از LINQ به XML در اسناد XML اجازه بدهید که با نمایش اطلاعات فایل XML شروع کنیم. مثال 18 یک پرس و جوی ساده بر روی فایل های XML را با استفاده از LINQ نشان میدهد.

    مثال 18 یک پرس و جوی ساده بر روی فایل های XML را با استفاده از LINQ :
    کد های HTML
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title>My Favorite Movies</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView ID="GridView1" runat="server">
    </asp:GridView>
    </div>
    </form>
    </body>
    </html>

    کد های VB.NET
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim query = From m In XElement.Load(MapPath("Movies.xml")).Elements("Mov ie") _
    Select m
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C#‎‎‎
    protected void Page_Load(object sender, EventArgs e)
    {
    var query = from m in XElement.Load(MapPath("Movies.xml")).Elements("Mov ie")
    select m;
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    توجه کنید که در این پرس و جو ، در LINQ به طور مستقیم فایل XML را بارگذاری کرده و عناصر موجود در آن فایل برگردانده می شوند ، که در این مورد همه عناصر فیلم بازیابی می شوند.
    تغییر کوچک دیگر که در مثال های قبل دیدید در پرس و جوی LINQ یکسان است.
    توجه داشته باشید که در خروجی تمامی تگ ها نمایش داده میشوند. این موضوع به دلیل است که در این پرس و جو از شیء XElement استفاده شده و محتویات عمومی آن را بر میگرداند نه اطلاعات فیلم ها را که انتظار ماست و دلیل آن این است که LINQ به خودی خود هیچ راهی را برای شناسایی نوع داده های اشیاء و برگرداندن آن ندارد. خوشبختانه شما میتوانید نوع داده ها را در پرس و جو مشخص کنید تا مشخص شود که هر گره از چه نوعی است.
    این موضوع در مثال بعدی مطرح خواهد شد.
    آخرین ویرایش به وسیله raziee : پنج شنبه 19 آذر 1388 در 20:44 عصر
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  21. #21

    Post مثال 19 : مشخص کردن نوع عناصر XML با استفاده از LINQ

    در مثال قبل محتویات یک فایل XML را با LINQ نمایش دادیم اما خروجی آن طور که مد نظر ماست ، نبود. در مثال 19 به رفع نواقص مثال 18 خواهیم پرداخت.
    مثال 19 : مشخص کردن نوع عناصر XML با استفاده از LINQ
    کد های VB.NET

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim query = From m In XElement.Load(MapPath("Movies.xml")).Elements("Mov ie") _
    Select New Movie With { _
    .Title = CStr(m.Element("Title")), _
    .Director = CStr(m.Element("Director")), _
    .Genre = CInt(m.Element("Genre")), _
    .ReleaseDate = CDate(m.Element
    ("ReleaseDate")), _
    .Runtime = CInt(m.Element("Runtime")) _
    }
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C#‎
    protected void Page_Load(object sender, EventArgs e)
    {
    var query = from m in XElement.Load(MapPath("Movies.xml")).Elements("Mov ie")
    select new Movie {
    Title = (string)m.Element("Title"),
    Director = (string)m.Element("Director"),
    Genre = (int)m.Element("Genre"),
    ReleaseDate = (DateTime)m.Element("ReleaseDate"),
    RunTime = (int)m.Element("RunTime")
    };
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    همانطور که می بینید ، ما در پرس و جو تغییراتی ایجاد کردیم تا به LINQ بفهمانیم که نوع داده های هر گرده چه چیزی است.
    توجه داشته باشید که در این روش تمام فایل XML بارگذاری می شود بنابراین ، این ایده ی خوبی نیست که یک فایل حجیم XML را با این روش بارگذاری کنید.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  22. #22

    Post join دادهای XML با استفاده از LINQ

    join دادهای XML با استفاده از LINQ
    LINQ در XML همانند LINQ در Object از گروه بندی و فیلتر سازی داده ها پشتیبانی میکند. علاوه بر آن LINQ در XML از joining داده ها پشتیبانی میکند و درواقع شما میتوانیید دو سند XML را با هم ترکیب کنید کاری که بدون استفاده از LINQ شاید سخت باشد.
    به کد های زیر نگاه کنید ، join کردن در XML همانند join کردن در Object ها میباشد.در مثال قبلی تنها شماره ی مربوط به ژانر فیلم ها در خروجی نمایش داده میشد ، اما بهتر است که ما نام هر ژانر را در خروجی نمایش دهیم.
    مثال زیر فایل XML مربوط به اطلاعات ژانر ها است.

    مثال 20 : فایل XML ژانر ها
    کد های XML:
    <?xml version="1.0" encoding="utf-8" ?>
    <Genres>
    <Genre>
    <ID>0</ID>
    <Name>Comedy</Name>
    </Genre>
    <Genre>
    <ID>1</ID>
    <Name>Drama</Name>
    </Genre>
    <Genre>
    <ID>2</ID>
    <Name>Action</Name>
    </Genre>
    </Genres>

    برای join کردن هر دو این فایل ها شما باید از پرس و جوی join استفاده کنید که در مثال زیر آورده شده است.

    مثال 21 : join دادهای XML با استفاده از LINQ:
    کد های VB.NET :
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim query = From m In XElement.Load(MapPath("Listing9-18.xml"))
    .Elements("Movie") _
    Join g In XElement.Load(MapPath("Listing9-21.xml")).Elements
    ("Genre") _
    On CInt(m.Element("Genre")) Equals CInt(g.Element("ID")) _
    Select New With { _
    .Title = CStr(m.Element("Title")), _
    .Director = CStr(m.Element("Director")), _
    .Genre = CStr(g.Element("Name")), _
    .ReleaseDate = CDate(m.Element("ReleaseDate")), _
    .Runtime = CInt(m.Element("RunTime")) _
    }
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C#‎‎ :
    protected void Page_Load(object sender, EventArgs e)
    {
    var query = from m in XElement.Load(MapPath("Movies.xml")).Elements("Mov ie")
    join g in XElement.Load(MapPath("Genres.xml")).Elements("Gen re")
    on (int)m.Element("Genre") equals (int)g.Element("ID")
    select new {
    Title = (string)m.Element("Title"),
    Director = (string)m.Element("Director"),
    Genre = (string)g.Element("Name"),
    ReleaseDate = (DateTime)m.Element("ReleaseDate"),
    RunTime = (int)m.Element("RunTime")
    };
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    در این مثال شما می بینید از متد XElement.Load استفاده کردیم که به عنوان بخشی از بدنه کد های LINQ است تا فایل مربوط به ژانر فیلم را بارگذاری کند.
    هنگامی که اطلاعات با هم join میشوند شما میتوانید هم به عناصر فیلم و هم به عناصر ژانر دسترسی داشته باشید.

    »» از پست بعدی به سراغ LINQ به SQL خواهیم رفت.(قابل توجه دوستانی که برام پیغام میگذاشتند تا این موضوع رو شروع کنم.)
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  23. #23

    Thumbs up مقدمه ای بر LINQ به SQL

    LINQ به SQL

    مقدمه ای بر LINQ به SQL

    LINQ به SQL به عنوان سومین و آخرین نوع از LINQ در این آموزش است. LINQ به SQL همانطور که از نامش مشخص است ، شما را قادر میسازد تا از منابع داده ای مبتنی بر SQl نظیر SQL Server2005 به آسانی و با سرعت پرس و جو تهیه کنید. همانند انواع دیگر LINQ ، LINQ به SQL نیز در حال توسعه در دات نت است. این ساختار در حال حاظر در کتابخانه ی System.Data.Linq قرار دارد.
    علاوه بر اپراتور هایی که تا کنون از LINQ فرا گرفته اید در ویژوال استادیو 2008 شئی برای ارتباط مستقیم (Object Relation به اختصار (O/R) ) SQL و LINQ ایجاد شده است. این O/R به شما کمک می کند تا منبع داده ای مبتنی بر SQL که قرار است برای پرس و جو گیری از LINQ استفاده شود را سریع ایجاد کنید. این ساده ترین راه برای شروع به استفاده و پیاده سازی SQL در LINQ است.
    برای پیاده سازی SQL در LINQ شما باید یک فایل " Linq to SQL Classes" را به پروژه ی خود اضافه کنید. فایل Linq to SQL Classes به شما اجازه میدهد تا به آسانی و به صورت بصری ، بستری برای داده ها بسازید تا بتوانید به آن ها دسترسی داشته باشید و از آن ها پرس و جو تهیه کنید.
    بعد از کلیک بر روی دکمه ی "OK" در کادر محاوره "Add New Items" برای اضافه کردن این فایل برای پروژه ی خود ، ویوژوال استادیو این فایل را در پوشه ی "App_Code" اضافه میکند. بعد از اضافه کردن فایل "LINQ to SQL Classes" در پوشه ی مربوطه شما میتوانید در هر کجای پروژتون که تمایل دارید به آن دسترسی داشته باشید.
    هنگامی که این فایل به پروژه ی شما اضافه شود ویژوال استادیو به صورت خودکار حالت گرافیکی "LINQ to SQL" را برای شما باز میکند. این شیء O/R ساده ابزاری هایی دارد که شبه کمک آن ها شما قادر خواهید بود داده های مربوطه را ایجاد ، ویرایش ، حذف و یا بین آنها ارتباط برقرار کنید. هنگامی که شما در حالت طراحی این تغییرات را بر روی داده هایتان انجام میدهید "LINQ to SQL" کد کلاس اشیائی را که ساختار همان اشیاء شما هستند را تولید میکند. بعد ها زمانی که آماده اید برای نوشتن پرس و جوهای LINQ بر روی اشیاء داده ها این کلاس ها به ویژوال استادیو اجازه میدهند تا در زمان طراحی از Intellisense پشتیبانی کند تا کدهایی قوی داشته باشید و زمان کامپایل ، نوع داده ها را چک کند. از آنجا که O/R در درجه ی اول برای استفاده LINQ to SQL طراحی شده است ، ایجاد بازنمود های CRL اشیائ SQL (نظیر Tables ، Views و Stored Procedures) بسیار آسان تر شده است.
    با استفاده از LINQ to SQL ما میتوانیم همان مثال Movie خود را در این بخش پیاده سازی کنیم. در این بخش داده ها بر روی پایگاه داده SQL Server Express ذخیره میشوند.

    در پست بعدی نحوه انجام این کار توضیح داده خواهد شد.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  24. #24

    Wink ادامه LINQ to SQL

    بعد از باز کردن حالت گرافیکی اکسپلورر سرور (Server Explorer) ویژوال استادیو ، پایگاه داده Movies و پوشه های جداول قابل مشاهده است. از این پنجره (Server Explorer) جدول Movies را به داخل LINQ to SQL Classes درگ میکنیم. توجه کنید که بلافاصله بعد از درگ کردن ، به صورت خودکار مشخصات جدول شناسایی شده و کلاس های مربوط به آن ایجاد میشود و در حالت گرافیکی به شما نمایش داده می شود.
    هنگامی که شما جدول را به داخل " LINQ to SQL" درگ میکنید ، اگر لازم باشد ویژوال استادیو به بررسی نام اشخاص می پردازد و به صورت خودکار نام کلاس را ایجاد میکند.
    این کار به شما در نام گذاری طبق قوائد نام گذاری در دات نت کمک می کند. به عنوان مثال اگر شما جدول Products را از پایگاه داده Northwind به حالت گرافیکی درگ کنید به صورت خودکار نام Product به عنوان نام کلاس ساخته می شود.(آن را از حالت جمع به حالت مفرد تبدیل میکند.)
    در حالی که انجام این کار در حالت کلی خوب است اما در به طور 100% درست نیست و ممکن است نام صحیح نباشد )مثلا نام Movies را به جای نوشتن Movie بنویسد (Movy. خوشبختانه شما این اجازه را دارید که این نام را تغییر دهید. شما میتوانید به راحتی و با کلیک بر روی نام ، آن نام را ویرایش کنید.
    بعد از اضافه کردن موجودیت Movie ، جدول Genres را درگ کنید. ویژوال استادیو دوباره یک نماینده از از این جدول تولید میکند.(آن را به نام Genre که مفرد است تغییر میدهد.) علاوه بر این ، وجود کلید خارجی بین Movie و Genre را تشخیص داده و یک فلش نقطه چین بین آن دو ایجاد میکند. این فلش نشان دهنده ی ارتباط کلید خارجی دو جدول و جهت آن است.
    اکنون که شما یک فایل LINQ to SQL تنظیم شده دارید ، به راحتی میتوانید به داده های context دسترسی داشته باشید و پرس و جو تهیه کنید.
    برای شروع شما نیاز به ایجاد یک نمونه ی جدید از data context دارید. در اینجا من آن را در یک صفحه ی ASP.NET ایجاد کردم.
    مثال 22 : ایجاد یک data context جدید
    کد های VB.NET
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim dc As New MoviesDataContext()
    End Sub

    کد های C#‎
    protected void Page_Load(object sender, EventArgs e)
    {
    MoviesDataContext dc = new MoviesDataContext();
    }

    در این ایجا ما یک نمونه از MoviesDataContext ایجاد کرده ایم که نام کلاس data context است که قبلا در فایل LINQ to SQL آن را ایجاد کرده بودیم.
    بعد از ایجاد یک MoviesDataContext جدید ، شما میتوانید شروع به نوشتن LINQ کنید. همانطوز که اشاره شد ، به دلیل آنکه LINQ to SQL یک کلاس اشیاء به صورت آینه وار از ساختار جداول پایگاه داده میسازد ، شما میتوانید پشتیبانی Intellisense را در پرس و جو های LINQنوشته شده ، داشته باشید. مثال 23 همان نمایش اطلاعات فیلم هاست که اینبار با استفاده از پایگاه داده پیاده سازی شده است.
    مثال 23 : پرس و جو گرفتن از داده های فیلم در LINQ to SQL
    کد های VB.NET
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim dc As New MoviesDataContext()
    Dim query = From m In dc.Movies _
    Select m
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C#‎
    protected void Page_Load(object sender, EventArgs e)
    {
    MoviesDataContext dc = new MoviesDataContext();
    var query = from m in dc.Movies
    select m;
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    توجه کنید که آیا ما مجبوریم کد های دسترسی به پایگاه داده را بنویسیم؟ همانطو که قبلا(بدون LINQ to SQL) مجبور بودیم برای دسترسی به پایگاه داده در پروژه کد بنویسیم!
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  25. #25
    کاربر دائمی
    تاریخ عضویت
    شهریور 1382
    محل زندگی
    هلند
    پست
    1,709

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    سلام

    با تشکر از جناب raziee و با اجازه از ایشان من همه مطالب این تاپیک رو جمع آوری نموده و در یک فایل PDF نوشتم و جهت استفاده سایر دوستان همینجا آپلود میکنم . البته تا انتهای پست 24 میباشد که به محض اضافه شدن مطالب آنها را نیز اضافه میکنم .
    در ضمن من فقط کدهای VB رو نوشتم
    در آخر اینکه اگر جناب raziee راضی نباشند این پست را پاک میکنم .
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Hossein Bazyan : سه شنبه 07 اردیبهشت 1389 در 11:07 صبح

  26. #26

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    با سلام.

    آقا رضا دستت درد نکنه
    خیلی حال دادی
    فقط یه چیزی آموزش تموم شد ؟؟
    دیگه این تاپیک آپ نمیشه ؟؟
    بنده رضیئی هستم.
    آموزش این تاپیک به اتمام نرسیده.
    بنده درگیر کارهای شخصی هستم و متاسفانه وقت کافی ندارم.
    در اولین فرصت برای تکمیل این آموزش اقدام میکنم.

    با تشکر از جناب majid325 مدیر این بخش که به این تاپیک توجه ویژه ای داشتند و پست های غیر مرتبط رو حذف میکردند.

    به عنوان یک نمونه خوب برای فراگیری LINQ دیدن مثال های لینک زیر رو پیشنهاد میکنم.
    http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

    شاد باشید.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  27. #27

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    برای یک نمونه ی آموزشی برای نحوه ی استفاده از LINQ to SQL در معماری چند لایه ، گریدویو جناب راد رو با LINQ در این تاپیک نوشتم.
    امیدوارم به فراگیری دوستان کمک کنه.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  28. #28

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    توجه داشته باشید که ما برای تولید این صفحه نیاز به نوشتن هیچگونه کدی برای دسترسی به پایگاه داده نداریم.
    LINQ این کار را از دوش ما برداشته و کدهای SQL را تولید میکند.
    شما میتوانید ایجاد شده توسط LINQ برای پرس و جو را در پنجره ی output در ویژوال استادیو ملاحظه کنید.(برای نمایش این پنجره از مسیر View>Output و یا کلید های ctrl+w+o اقدام کنید)
    مثال 24 : نوشتن پرس و جوی LINQ به SQL در پنجره ی Output
    کد های VB.NET
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim dc As New MoviesDataContext()
    Dim query = From m In dc.Movies _
    Select m
    System.Diagnostics.Debug.WriteLine(query)
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C#‎‎‎
    protected void Page_Load(object sender, EventArgs e)
    {
    MoviesDataContext dc = new MoviesDataContext();
    var query = from m in dc.Movies
    select m;
    System.Diagnostics.Debug.WriteLine(query);
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }


    حالا شما میتوانید متن زیر را در قسمت debug پنجره ی Output ملاحظه کنید.

    SELECT [t0].[Title], [t0].[Director], [t0].[Genre], [t0].[RunTime], [t0].[ReleaseDate]
    FROM [dbo].[Movie] AS [t0]



    همانطور که می بینید ، کدهای SQL تولید شده برابر با سینتکس استاندارد SQL هستند و LINQ کدهای بهینه را تولید میکند ، حتی برای پرس و جو های پیچیده تر مانند گروه بندی داده ها نیز کد های تولید شده بهینه هستند.

    مثال 9-26 : گروه بندی داده ها توسط LINQ به SQL
    کد های VB.NET
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim dc As New MoviesDataContext()
    Dim query = From m In dc.Movies _
    Group By m.Genre Into g = Group, Count()
    System.Diagnostics.Debug.WriteLine(query)
    Me.GridView1.DataSource = query
    Me.GridView1.DataBind()
    End Sub

    کد های C#‎‎‎

    protected void Page_Load(object sender, EventArgs e)
    {
    MoviesDataContext dc = new MoviesDataContext();
    var query = from m in dc.Movies
    group m by m.Genre into g
    select new { Genre = g.Key, Count = g.Count() };
    System.Diagnostics.Debug.WriteLine(query);
    this.GridView1.DataSource = query;
    this.GridView1.DataBind();
    }

    کدهای تولید شده توسط LINQ
    SELECT COUNT(*) AS [Count], [t0].[Genre]
    FROM [dbo].[Movie] AS [t0]
    GROUP BY [t0].[Genre]

    همانطور که ملاحظه میکنید کدهای تولید شده برای SQL Server بهینه هستند.
    ------------------------------------------------------------------------------------
    پاورقی : با پوزش به خاطر تاخیر در ادامه روند آموزش.
    لطفا برای درک بهتر مطالب نوشته های پیشین را دنبال کنید.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  29. #29

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    سلام
    با تشكر از مقاله خوبتون ببخشيد من با Update كردن محتويات جدولم با دستوات Linq مشكل دارم . كتاب Linq For Visual stedio نشر ناقوس رو خوندم ، توي فروم ها سرك كشيدم ، سايت هاي آموزشي به زبان انگليسي از جمله CodeProject رو ديدم ولي ديگه واقعاً نمي دونم چي كار كنم مشكلم اينه كه با اجراي دستورات تغيير هيچ تغييري داده نمي شود و هيچ خطايي هم نمي گيرد . لطفاً كمك كنيد .
    سلام. لطف دارین.
    من در این لینک یک نمونه ی کار با دیتابیس SQL رو گذاشتم. در پست های قبلی هم لینکش رو گذاشته بودم.
    اون رو مطالعه بکنید اگر سوالی بود در همون تاپیک بپرسید.
    http://www.barnamenevis.org/sh...d.php?t=238682
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  30. #30
    کاربر دائمی
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    1,112

    گروه بندی بر اساس چند مشخصه

    با تشکر از آقای رضیئی
    در پست شماره 17 گروه بندی داده ها آموزش داده شد. در این پست با ذکر یک مثال گروه بندی داده ها بر اساس چند مشخصه نمایش داده می شه.
    فرض کنید کلاسی داریم برای معرفی کالا. یک نمونه از تعریف این کلاس می تونه به شکل زیر باشه:

    class Asset
    {
    public int ID {get;set;}
    public string Model {get;set;}
    public string TeqnicalNo {get;set;}
    public int Quantity {get;set;}
    public int Remain {get;set;}
    public string Name {get;set;}
    }
    در این کلاس تعداد کالا در Quantity و باقی مانده کالا (مثلا در انبار) در Remain نگهداری می شه. در یک مساله واقعی این کلاس در ارتباط با جدولی مشابه در پایگاه داده هست. هدف اینه که می خوایم برای هر مدل و شماره فنی، مجموع باقی مانده رو بدست بیاریم. برای این کار لازمه داده ها رو بر اساس Model و TeqnicalNo گروه بندی کنیم. اگه داده ها در یک لیست ژنریک از Asset باشند:

    List<Assets> AssetList = GetAssetsFromDatabase();
    گروه بندی رو به شکل زیر انجام می دیم:

    var result = from asset in AssetList
    group asset by new
    {

    q.Model,
    q.TeqnicalNo,

    } into g
    select new
    {

    Model = g.Key.Model,
    TeqnicalNo = g.Key.TeqnicalNo,
    REMAIN = g.Select(p => (int)p.Remain).Sum(),
    AssetGroup = g.ToList()
    };

  31. #31

    نقل قول: جایگزین کردن LINQ به جای روش های سنتی

    سلام خسته نباشید
    من میخوام دیتاکانتکست از سرویس به UI برگردونم ولی با پیغام خطا serialization بهم میده،بخاطر همین من خواستم serialize کنمش ولی type دیتاکانتکست و نمیشناسه!
    نمیدونم چیکار کنم؟

  32. #32
    کاربر دائمی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    قزوین
    پست
    158

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    سلام
    من کدي شبيه زير نوشتم:

    DataClassesDataContext db = new DataClassesDataContext();
    var q = (from p in db.Messages
    where p.Message_Id == Convert.ToInt16(Request.QueryString["ID"])
    select p).Single();
    q.ReadMessage = "yes";
    db.SubmitChanges();



    اما در خطي که تابع Single وجود داره ازم خطا مي گيره که:
    Specified cast is not valid.

    در واقع توي کل پروژه من فقط Insert ها با دستورات Linq کار مي کنن و بقيه مثل آپ ديت و کوئري براي خوندن اطلاعات کار نمي کنن و هميشه همين خطا رو مي ده.
    ديگه واقعا نمي دونم چه کار کنم.
    يه بار هم با ابزار ويژوالي يعني ايجاد فايل dbml سعي کردم آپ ديت انجام بدم که اونجا کار کرد و انجام داد. ولي واقعا دلم مي خواد بدونم کجاي کار من ايراد داره که کد من اجرا نمي شه

  33. #33
    کاربر دائمی آواتار reza344
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    اصفهان
    سن
    41
    پست
    126

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    Convert.ToInt16(Request.QueryString["ID"])
    سلام
    این تبدیل رو قبل از کوئری انجام بده ببین مشکلت حل میشه ؟

  34. #34

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    سلام جناب raziee واقعا خسته نباشید . ببخشید این آموزش ها برای برنامه های win هست یا web asp؟ رو win form کار میکنند.

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

  35. #35

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    با سلام.
    ببخشید این آموزش ها برای برنامه های win هست یا web asp؟ رو win form کار میکنند.
    LINQ محدود به وب یا ویندوز نیست.
    محدود به کار با دیتابیس هم نیست.
    شما میتونید بر روی یک لیست یا یک فایل XML و ... کوئری هایی را بوسیله ی LINQ بنویسید.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  36. #36

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    سلام
    با وجود ذخيره كانكشن استرينگ در appconfig آيا براي اتصال در linqباز هم نياز هست كه كانكشن استرينگ رو در برنامم تعريف كنم؟ من با linq كار ميكنم و الان دچار مشكل شدم و هر بار كه از برنامه اجرا ميگيرم اطلاعات به جاي اطلاعات قبلي ذخيره ميشه؟ وبراي گزارشگيري از stimul report استفاده ميكنم اما داده هاي جدولم در گزارش نمايش داده نميشه و فقط هدر نمايش داده ميشه ؟ دوستاني كه با linq كار مي كنند اگه امكان داره مشكل من رو بر طرف كنند
    با تشكر

  37. #37

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    ببخشید میشه یه پروژه ساده از LinQ توی C#‎‎ بیارید؟

  38. #38

  39. #39

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    یک دنیا تشکر
    خیلی به این آموزش احتیاج داشتم

    واقعا دست همتون دردنکنه

  40. #40
    کاربر دائمی آواتار senaps
    تاریخ عضویت
    آذر 1387
    محل زندگی
    خونمون!
    سن
    31
    پست
    210

    نقل قول: آموزش LINQ (از ابتدا تا انتها)

    سلام...
    اقا من کوری گرفتن با لینک رو بلدم...ولی اینا رو باید کجا نوشت؟! ارتباط با دیتابیس چی میشه؟ اینا رو کی و کجا باید نوشت؟

    اقا کسی جواب نداشت؟!!! اینو دارم بعد از یه هفته ویرایش میکنم:
    مثلا من یه جدول دارم که ID,User,Pass داره....
    میخوام بعد از زدن باتن، دیتای دو تا تکست باکس توی این دو فیلد ثبت بشه....کسی کمک میکنه؟! کدها و مثال هایی که دادین برا تو ASP هستش....
    آخرین ویرایش به وسیله senaps : جمعه 05 خرداد 1391 در 14:44 عصر

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

برچسب های این تاپیک

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

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