نمایش نتایج 1 تا 10 از 10

نام تاپیک: مشکل datatable در linq

  1. #1

    مشکل datatable در linq

    سلام
    من کد زیررا نوشته ام
    public DataTable all()
    {
    using (var db = new DataClasses1DataContext())
    {
    var list = db.sp_tbl_SelectAll();
    return list;
    }
    }

    امادر return list; ارور می گیرد
    باید چه کدی بنویسم تا مشکل حل شود
    می خواهم از این طریق داده ها را در دیتاگرید نمایش بدهم

  2. #2
    کاربر دائمی آواتار abbas.oveissi
    تاریخ عضویت
    دی 1389
    محل زندگی
    تهران
    پست
    578

    نقل قول: مشکل datatableدر linq

    نقل قول نوشته شده توسط Iran58 مشاهده تاپیک
    سلام
    من کد زیررا نوشته ام
    public DataTable all()
    {
    using (var db = new DataClasses1DataContext())
    {
    var list = db.sp_tbl_SelectAll();
    return list;
    }
    }

    امادر return list; ارور می گیرد
    باید چه کدی بنویسم تا مشکل حل شود
    می خواهم از این طریق داده ها را در دیتاگرید نمایش بدهم
    خیلی Linq بلد نیستم اما تا اونجایی که میدونم دلیل خطا باید این باشه query یک IEnumerable برمیگردونه اما مقدار بازگشتی شما DataTable هست که باعث خطا میشه.فکر کنم از یه همچین روشی باید استفاده کنید :

    dataGridView.DataSource= list.ToList();
    آخرین ویرایش به وسیله abbas.oveissi : یک شنبه 29 تیر 1393 در 21:08 عصر

  3. #3

    نقل قول: مشکل datatableدر linq

    نقل قول نوشته شده توسط abbas.oveissi مشاهده تاپیک
    خیلی Linq بلد نیستم اما تا اونجایی که میدونم دلیل خطا باید این باشه query یک IEnumerable برمیگردونه اما مقدار بازگشتی شما DataTable هست که باعث خطا میشه.فکر کنم از یه همچین روشی باید استفاده کنید :

    dataGridView.DataSource= list.ToList();
    باسلام
    متاسفانه این جواب را نمی خواستم می خواهم داخل خود تابع رفع خطا بشه

  4. #4
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: مشکل datatableدر linq

    نقل قول نوشته شده توسط Iran58 مشاهده تاپیک
    باسلام
    متاسفانه این جواب را نمی خواستم می خواهم داخل خود تابع رفع خطا بشه
    یعنی با این حساب قصد دارین نتیجه کوئری linq رو درقالب دیتاتیبل ........ اون هم بدون هیچ تغییر و تبدیلی به انجام برسونین ؟

    .....نمی شه

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

     using System;using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Reflection;


    namespace linq_2_dt
    {
    static class Class1
    {
    public static DataTable ToDataTable<T>(this IEnumerable<T> source)
    {
    PropertyInfo[] properties = typeof(T).GetProperties();


    DataTable output = new DataTable();


    foreach (var prop in properties)
    {
    output.Columns.Add(prop.Name, prop.PropertyType);
    }


    foreach (var item in source)
    {
    DataRow row = output.NewRow();


    foreach (var prop in properties)
    {
    row[prop.Name] = prop.GetValue(item, null);
    }


    output.Rows.Add(row);
    }


    return output;
    }




    }
    }

    بعد هر کجای برنامه خواستین می تونین کوئری بزنین و بریزین داخل دیتاتیبل :

     private void Form1_Load(object sender, EventArgs e)        {
    var qury = from q in cntxt.Tbl_infos select q;

    DataTable oDataTable = new DataTable();
    oDataTable =Class1.ToDataTable(qury);
    dataGridView1.DataSource = oDataTable;

    }

  5. #5

    نقل قول: مشکل datatable در linq

    باسلام
    خطا زیر ظاهر می شود
    Error 1 Extension method must be defined in a top level static class; Class1 is a nested class C:\Users\84311645\documents\visual studio 2013\Projects\3leyar\3leyar\BussinessRule\tbl.cs 67 37 3leyar

    من کد زیر را نوشته ام
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Linq;
    using System.Reflection;
    using System.Text;

    namespace _3leyar.BussinessRule
    {
    class tbl
    {

    public int Id;
    public string Name;
    public string Family;
    public void insert()
    {
    using (var db = new DataClasses1DataContext())
    {
    var add = db.sp_tbl_Insert(Name, Family);
    }
    }

    public void delete()
    {
    using (var db = new DataClasses1DataContext())
    {
    var add = db.sp_tbl_DeleteRow(Id);
    }
    }

    public void Edit()
    {
    using (var db = new DataClasses1DataContext())
    {
    var add = db.sp_tbl_Update(Id, Name, Family);
    }
    }

    public void selectItem()
    {
    using (var db = new DataClasses1DataContext())
    {
    var Selected = db.sp_tbl_SelectRow(Id).FirstOrDefault();
    Id=Selected.Id;
    Name=Selected.Name ;
    Family=Selected.Family ;
    }
    }
    public IQueryable SelectAll()
    {
    using (var db = new DataClasses1DataContext())
    {
    //var query = from p in db.tblNames select p;
    //return query;
    var list = from c in db.tbls
    select c;
    return list;
    }
    }
    }
    }

    دارم با linq برنامه لایه ای می نویسم و می خواهم این عمل در تایع SelectAll() انجام شود در فرم خودم بتوانم فراخوانی کنم
    ممنون می شوم راهنمای بفرمایید

  6. #6

    نقل قول: مشکل datatableدر linq

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    یعنی با این حساب قصد دارین نتیجه کوئری linq رو درقالب دیتاتیبل ........ اون هم بدون هیچ تغییر و تبدیلی به انجام برسونین ؟

    .....نمی شه

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

     using System;using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Reflection;


    namespace linq_2_dt
    {
    static class Class1
    {
    public static DataTable ToDataTable<T>(this IEnumerable<T> source)
    {
    PropertyInfo[] properties = typeof(T).GetProperties();


    DataTable output = new DataTable();


    foreach (var prop in properties)
    {
    output.Columns.Add(prop.Name, prop.PropertyType);
    }


    foreach (var item in source)
    {
    DataRow row = output.NewRow();


    foreach (var prop in properties)
    {
    row[prop.Name] = prop.GetValue(item, null);
    }


    output.Rows.Add(row);
    }


    return output;
    }




    }
    }

    بعد هر کجای برنامه خواستین می تونین کوئری بزنین و بریزین داخل دیتاتیبل :

     private void Form1_Load(object sender, EventArgs e)        {
    var qury = from q in cntxt.Tbl_infos select q;

    DataTable oDataTable = new DataTable();
    oDataTable =Class1.ToDataTable(qury);
    dataGridView1.DataSource = oDataTable;

    }
    باسلام در دانت 4 جواب داد اما در دات نت3.5 ارور زیر را می دهد میشه راهنمای بفرمایید
    DataSet does not support System.Nullable<>.
    در خط زیر
    output.Columns.Add(prop.Name, prop.PropertyType);

  7. #7
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: مشکل datatableدر linq

    نقل قول نوشته شده توسط Iran58 مشاهده تاپیک
    باسلام در دانت 4 جواب داد اما در دات نت3.5 ارور زیر را می دهد میشه راهنمای بفرمایید
    DataSet does not support System.Nullable<>.
    در خط زیر
    output.Columns.Add(prop.Name, prop.PropertyType);
    تبدیل کوئری linq به دیتاتیبل و دیتاست در نگارشهای مختلف framwork فرق می کنه اگه اصرار دارین که از 3.5 استفاده کنین بایستی با کدهای مناسب اون نگارش کد نویسی کنی
    این نمونه که براتون قرار می دم با پروسچر و به شیوه 3 لایه و linq نوشته شده و توش از انواع تبدیل کوئری به دیتاتیبل استفاده گردیده
    فکر کنم با 3.5 جواب بده
    فایل های ضمیمه فایل های ضمیمه

  8. #8

    نقل قول: مشکل datatable در linq

    باسلام
    وتشکر از راهنمایی های ارزنده شما
    مهندس
    می شود جای datatable برای تابع خود چیز دیگری تعریف کنیم تا داده ها را بتوانیم در فرم مورد نظر در دیتاگرید ویا کمبوباکس نمایش بدهیم
    می دانم از void نمی شود استفاده کرد چون خروجی بر نمی گرداند
    دنبال چیز راحتی از datatable می گردم

  9. #9
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: مشکل datatable در linq

    نقل قول نوشته شده توسط Iran58 مشاهده تاپیک
    باسلام
    وتشکر از راهنمایی های ارزنده شما
    مهندس
    می شود جای datatable برای تابع خود چیز دیگری تعریف کنیم تا داده ها را بتوانیم در فرم مورد نظر در دیتاگرید ویا کمبوباکس نمایش بدهیم
    می دانم از void نمی شود استفاده کرد چون خروجی بر نمی گرداند
    دنبال چیز راحتی از datatable می گردم
    چهار طریق عمده برای این کار وجود داره حالا ببینین کدومیک براتون آسونتره لینک http://www.codeproject.com/Articles/...between-layers

  10. #10

    نقل قول: مشکل datatable در linq

    سلام
    فوق العاد خوب بود برای دیتاگرید
    اما برای comboxباید چکارکرد؟

تاپیک های مشابه

  1. مشکل update با linq
    نوشته شده توسط sinayas در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 8
    آخرین پست: چهارشنبه 29 آذر 1391, 15:51 عصر
  2. مشکل با فناوری LINQ TO SQL
    نوشته شده توسط Hybrid در بخش VB.NET
    پاسخ: 0
    آخرین پست: جمعه 09 دی 1390, 13:21 عصر
  3. حرفه ای: تبدیل DataTable به LINQ
    نوشته شده توسط araz_pashazadeh در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 1
    آخرین پست: سه شنبه 18 مرداد 1390, 16:04 عصر
  4. به روز رسانی یک دیتا تیبل . Update DataTable With LINQ
    نوشته شده توسط gharibeh223 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 6
    آخرین پست: سه شنبه 18 مرداد 1390, 10:33 صبح
  5. سوال: مشکل Update در linq
    نوشته شده توسط saeidgab در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 1
    آخرین پست: سه شنبه 22 تیر 1389, 20:07 عصر

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

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