ورود

View Full Version : تبدیل IENumerable به Datarow



borhaan
چهارشنبه 14 آذر 1397, 03:40 صبح
یعرض سلام واحترام به همه دوستان فعال
مشکل از این قراره که وقتی 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
متشکرم

borhaan
چهارشنبه 14 آذر 1397, 20:48 عصر
از این طریق هم خطا میده و نمی تونم کست کنم یعنی اجازه
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>();

Mahmoud.Afrad
جمعه 16 آذر 1397, 17:19 عصر
datarow زمانی کاربرد دارد که از دیتاتیبل استفاده کرده باشید.
در این کد کافی هست دیتاسورس را به نوعی که ایجاد کرده اید cast کنید
foreach (tbl_student drv in (IEnumerable<tbl_student>)dgvttt.ItemsSource)
{

}

borhaan
یک شنبه 18 آذر 1397, 22:04 عصر
متشکرم . بله درسته جواب داد . ولی تو این مدت من پروژه رو از LinqToSql به EntityFramwork منتقل کردم و همه این مدت یک اشتباه فاحش داشتم و اون این بود که پس از cast به این روش میخواستم از کد []drv استفاده کنم که جواب نمی داد و الان بعد از این راهنمایی بسیار خوب شما از کد زیر به نتیجه رسیدم ...
drv.Fname.ToString().Trim();

خیلی خیلی ممنونم:تشویق: