تبدیل IENumerable به DataTable
یعرض سلام واحترام به همه دوستان فعال
مشکل از این قراره که وقتی itemsource توسط فرامین linq to sql پر میشه دیگه نمی تونم از کست datarow استفاده کنم و این باعث شده نتونم مثل همیشه برای جستجو در گرید به ردیف مورد نظر برم .
نمی خوام دیتاگرید مجدد بارگذاری بشه ، فقط میخوام در همین اطلاعاتی که در ایتم سورس هست جستجو صورت بگیره.
کد پر کردن دیتا گرید اینه
DataClasses1DataContext mydb = new DataClasses1DataContext();
int Yearid = (cbYears.SelectedItem as tbl_year).id;
var i = from c in mydb.tbl_students where c.year_num == Yearid select c;
dgv_Students.ItemsSource = i;
و کد جستجو اینه :
foreach (DataRowView drv in (DataView)dgvttt.ItemsSource)
{
if (Str.StartsWith(ToFind))
{
IfFind = true;
dgvttt.SelectedItem = drv;
dgvttt.UpdateLayout();
dgvttt.ScrollIntoView(dgvttt.SelectedItem);
break;
}
}
خطا هنگام run time error و بخاطر cast کردن (DataView)dgvttt.ItemsSource
متشکرم
نقل قول: تبدیل IENumerable به Datarow
از این طریق هم خطا میده و نمی تونم کست کنم یعنی اجازه CopyToDataTable را هم نمی دهد! .
DataClasses1DataContext mydb = new DataClasses1DataContext();
int Yearid = (cbYears.SelectedItem as tbl_year).id;
IEnumerable<DataRow> query =
(from r in mydb.tbl_students.AsEnumerable()
where (r.year_num == Yearid)
select r).Cast<DataRow>();
DataTable ddt = new DataTable();
ddt = query.CopyToDataTable<DataRow>();
نقل قول: تبدیل IENumerable به Datarow
datarow زمانی کاربرد دارد که از دیتاتیبل استفاده کرده باشید.
در این کد کافی هست دیتاسورس را به نوعی که ایجاد کرده اید cast کنید
foreach (tbl_student drv in (IEnumerable<tbl_student>)dgvttt.ItemsSource)
{
}
نقل قول: تبدیل IENumerable به Datarow
متشکرم . بله درسته جواب داد . ولی تو این مدت من پروژه رو از LinqToSql به EntityFramwork منتقل کردم و همه این مدت یک اشتباه فاحش داشتم و اون این بود که پس از cast به این روش میخواستم از کد []drv استفاده کنم که جواب نمی داد و الان بعد از این راهنمایی بسیار خوب شما از کد زیر به نتیجه رسیدم ...
drv.Fname.ToString().Trim();
خیلی خیلی ممنونم:تشویق: