نقل قول: مشکل 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();
نقل قول: مشکل datatableدر linq
نقل قول:
نوشته شده توسط
abbas.oveissi
خیلی Linq بلد نیستم اما تا اونجایی که میدونم دلیل خطا باید این باشه query یک IEnumerable برمیگردونه اما مقدار بازگشتی شما DataTable هست که باعث خطا میشه.فکر کنم از یه همچین روشی باید استفاده کنید :
dataGridView.DataSource= list.ToList();
باسلام
متاسفانه این جواب را نمی خواستم می خواهم داخل خود تابع رفع خطا بشه
نقل قول: مشکل 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;
}
نقل قول: مشکل 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() انجام شود در فرم خودم بتوانم فراخوانی کنم
ممنون می شوم راهنمای بفرمایید
نقل قول: مشکل 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);
1 ضمیمه
نقل قول: مشکل 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 جواب بده
نقل قول: مشکل datatable در linq
باسلام
وتشکر از راهنمایی های ارزنده شما
مهندس
می شود جای datatable برای تابع خود چیز دیگری تعریف کنیم تا داده ها را بتوانیم در فرم مورد نظر در دیتاگرید ویا کمبوباکس نمایش بدهیم
می دانم از void نمی شود استفاده کرد چون خروجی بر نمی گرداند
دنبال چیز راحتی از datatable می گردم
نقل قول: مشکل datatable در linq
نقل قول:
نوشته شده توسط
Iran58
باسلام
وتشکر از راهنمایی های ارزنده شما
مهندس
می شود جای datatable برای تابع خود چیز دیگری تعریف کنیم تا داده ها را بتوانیم در فرم مورد نظر در دیتاگرید ویا کمبوباکس نمایش بدهیم
می دانم از void نمی شود استفاده کرد چون خروجی بر نمی گرداند
دنبال چیز راحتی از datatable می گردم
چهار طریق عمده برای این کار وجود داره :لبخند: حالا ببینین کدومیک براتون آسونتره لینک http://www.codeproject.com/Articles/...between-layers
نقل قول: مشکل datatable در linq
سلام
فوق العاد خوب بود برای دیتاگرید
اما برای comboxباید چکارکرد؟