دسته بندی ها
15:26 1400/10/27
ساخت یک متد به صورت جنریک جهت نمایش همه فیلدهای کویری
سلام.
آیا می شود با استفاده از کلاس جنریک CrudGenericMethod متدی بسازیم که درآن بتوان جوین های زیادی زد و در آخر تمام فیلدها را برگرداند.(مجموعه ای از تمام فیلدهای جوین شده).این عمل رو با متد Get انجام دادم اما فقط فیلدهای جدول اجرا کننده تابع Get را به عنوان خروج در لیست می دهد.
جداول
public partial class Student
{
[Key]
public int IDStudent { get; set; }
public string NameStudent { get; set; }
public ICollection<Grid> Grids { get; set; }
}
public partial class Book
{
[Key]
public int IDBook { get; set; }
public string NameBook { get; set; }
public ICollection<Grid> Grids { get; set; }
}
public partial class Grid
{
[Key]
public int ID { get; set; }
public int IDStudent { get; set; }
public int IDBook { get; set; }
public int gride { get; set; }
public Book Book { get; set; }
public Student Student { get; set; }
}
مثل لیست پایین:
var list = (from a in db.MyGrid
join b in db.MyBook on a.IDBook equals b.IDBook
join c in db.MyStudent on a.IDStudent equals c.IDStudent
select new { a.ID, a.gride, b.IDBook ,b.NameBook,c.IDStudent, c.NameStudent }).ToList();
radGridView1.DataSource = list;
متد Get
public virtual IEnumerable<Tentity> Get(Expression<Func<Tentity, bool>> whereVariable = null,
Func<IQueryable<Tentity>,IOrderedQueryable<Tentity>> orderbyVariable = null,
string joinString = "")
{
IQueryable<Tentity> query = _table;
if (whereVariable != null)
{
query = query.Where(whereVariable);
}
if (orderbyVariable != null)
{
query = orderbyVariable(query);
}
if (joinString != "")
{
foreach (string joins in joinString.Split(','))
{
query = query.Include(joins);
}
}
return query.ToList();
}
ویرایش شده در پنج شنبه 25 اسفند 1401 ساعت 12:13:25
مشخصات سوال کننده :
کاربر : Tarak4135
امتیاز کاربر : 56
رتبه کاربر : 17
به این سوال امتیاز بدهید
0
تعداد بازدید این سوال : 3965
1 نظر
pedram_khan :
شما خودتون پاسخ سوال خودتون رو دادید. میخواید چند تا کوئری با هم جوین کنید و در قالب یک متد که ورودی TModel یا جنریک داره استفاده کنید و همین کار رو هم در مثالی که زدید انجام دادید. دقیقا سوال کجاست ؟
امتیاز کاربر : 277
رتبه کاربر : 6
تاریخ ثبت : 02:36 1400/10/29
هوش مصنوعی
پاسخ هوش مصنوعی
برای ایجاد یک متد جنریک که بتواند داده ها را از چند جدول با استفاده از جوین ها برگرداند، می توانید از IQueryable و Projection در LINQ استفاده کنید. در زیر مثالی از یک تابع جنریک برای این منظور آورده شده است:
public virtual IEnumerable<TResult> GetWithJoins<TResult>(
Expression<Func<Tentity, bool>> whereVariable = null,
Func<IQueryable<Tentity>, IOrderedQueryable<Tentity>> orderbyVariable = null,
Func<IQueryable<Tentity>, IQueryable<TResult>> selectVariable = null,
string joinString = "")
{
IQueryable<Tentity> query = _table;
if (whereVariable != null)
{
query = query.Where(whereVariable);
}
if (joinString != "")
{
foreach (string joins in joinString.Split(','))
{
query = query.Include(joins);
}
}
if (orderbyVariable != null)
{
query = orderbyVariable(query);
}
return selectVariable != null ? selectVariable(query).ToList() : null;
}
سپس می توانید از این متد به این صورت استفاده کنید:
var list = GetWithJoins(
whereVariable: null,
orderbyVariable: q => q.OrderBy(x => x.ID),
selectVariable: q => from a in q
join b in db.MyBook on a.IDBook equals b.IDBook
join c in db.MyStudent on a.IDStudent equals c.IDStudent
select new { a.ID, a.gride, b.IDBook, b.NameBook, c.IDStudent, c.NameStudent }
);
radGridView1.DataSource = list;
با استفاده از این روش، می توانید هر تعداد جوین و انتخاب کنید و تمام فیلدها را بازگردانید.
آخرین سوالات ثبت شده
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
سوالات مرتبط
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.
 
ورود