
نوشته شده توسط
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);