استفاده مجدد از کوری Entity Framework
سلام دوستان عزیز عذر خواهی میکنم من این سوال رو قبلا در اینجــــآ مطرح کرده بودم اما به نتیجه نرسیدم پاسخ خوبی جناب qwbasic دادن اما در نحوه استفاده مشکل داشتم لطفا عزیزانی کمک کنند.
من فیلد های جدول رو به این شکل توی گرید نمایش میدم :
private void viewData()
{
Database dbs = new Database ();
DGVbook.DataSource = from view in dbs.tblBook
where view.ID_book==1
select new
{
view.name,
view.family,
lif= (view.lif == 1) ? "نیست" :
(view.lif== 2) ? "هست" :
null,
};
}
لیست آیتم هام خیلی هستند .
حالا من میام روی جدول جستجو کنم و در همین گرید نمایش بدم...
دوباره باید این همه کد رو برای یه سرچ ساده بنویسم (حدود 20 سرچ هم دارم)
private void viewSearch1()
{
Database dbs = new Database ();
DGVbook.DataSource = from view in dbs.tblBook
where view.book=="شیمی"
select new
{
view.name,
view.family,
lif= (view.lif == 1) ? "نیست" :
(view.lif== 2) ? "هست" :
null,
};
حالا من چطور میتونم وقتی این قسمت رو نوشتم دیگه نیاز به تایپ مابقی و آیتم ها نیست
private void viewSearch1()
{
Database dbs = new Database ();
DGVbook.DataSource = from view in dbs.tblBook
where view.book=="شیمی"
یعنی بشه از select new تابع اول viewData استفاده کنم؟
اینم مثال خوب آقای qwbasic که نتونستم استفاده کنم :
نقل قول:
نوشته شده توسط
gwbasic
from view in dbs.tblBook
where view.book=="شیمی"
select myAnonymousType(view)
...
public object myAnonymousType(tblBook book)
{
return new
{
view.name,
view.family
};
}
با تشکر
نقل قول: استفاده مجدد از کوری Entity Framework
میتونی یک کلاس با پراپرتی های مناسب تعریف کنی و همچنین یک extension method
public static class MyExtensionMethods
{
public class MyClass
{
string name, family, lif;
public string Lif
{
get { return lif; }
set { lif = value; }
}
public string Family
{
get { return family; }
set { family = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
}
public static IEnumerable<MyClass> CustomSelect(this IEnumerable<tbl> source)
{
return (from s in source
select new MyClass
{
Name = view.name,
Family = view.family,
Lif = (view.lif == 1) ? "نیست" :
(view.lif == 2) ? "هست" :
null
}
).ToList();
}
}
به اینصورت هم استفاده کن:
private void viewSearch1()
{
Database dbs = new Database();
DGVbook.DataSource = (from view in dbs.tblBook
where view.book == "شیمی"
select view
).CustomSelect();
}
نقل قول: استفاده مجدد از کوری Entity Framework
سلام ممنونم از لطف شما ولی اینجور نیاز به کد و وقت زیادی هست چون وسعت اطلاعات منم خیلی زیاد هستش...
این پست رو ببینید من میخوام از این روش در این پست استفاده کنم میشه خواهش کنم یه تست کنید.
نقل قول: استفاده مجدد از کوری Entity Framework
توی اون تاپیک گفتی
نقل قول:
حالا من میام روی جدول جستجو کنم و در همین گرید نمایش بدم...
دوباره باید این همه کد رو برای یه سرچ ساده بنویسم (حدود 20 سرچ هم دارم)
یعنی چی 20 تا سرچ داری. میتونی دو سه تاش رو با هم بزاری برای آشنایی با شکل کوئری ها؟ و اینکه این سرچ ها به هم وابسته هستند یا نه جدا انجام میشن؟یه توضیح بده.
نقل قول: استفاده مجدد از کوری Entity Framework
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
توی اون تاپیک گفتی
یعنی چی 20 تا سرچ داری. میتونی دو سه تاش رو با هم بزاری برای آشنایی با شکل کوئری ها؟ و اینکه این سرچ ها به هم وابسته هستند یا نه جدا انجام میشن؟یه توضیح بده.
سلام ببخشید بد توضیح داده بودم منظورم این بود که باید بیشتر از 20 کوری بگیرم که همه نیاز به select new داره که فیلد ها رو باید در DataGridView نمایش بده...
این دقیقا پاسخ سوالم ولی متاسفانه یه خطای کوچیک داره.
from view in dbs.tblBook
where view.book=="شیمی"
select myAnonymousType(view)
...
public object myAnonymousType(tblBook book)
{
return new
{
view.name,
view.family
};
}
نقل قول: استفاده مجدد از کوری Entity Framework
بالاخره باید یک کلاس برای اون قسمت new تعریف کنی چون با object به پراپرتی هاش دسترسی نداری.
کد پست2 مشکلش چیه؟ یک متد توسعه ایجاد میکنی و هر جا خواستی ازش استفاده میکنی.
2 ضمیمه
نقل قول: استفاده مجدد از کوری Entity Framework
سلام ببخشید میشه اینو تست کنید یه خطای کوچیک داره...
نقل قول: استفاده مجدد از کوری Entity Framework
موقع فراخوانی باید شئ رو ارسال کنی(یعنی i)
این هم طبق متد توسعه
http://uploadtak.com/images/x499_test.rar
نقل قول: استفاده مجدد از کوری Entity Framework
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
واقع بهتون تبریک میگم خوب با کلاس ها کار میکنید...
خیلی گلید مشکلم حل شد.
:تشویق: