ایجاد جستجوی ترکیبی بین چند فیلد در سی شارپ
با سلام دوستان
من میتونم در یک پروژه از چند تکنولوژی استفاده کنم به عنوان مثال انتیتی و لینک استفاده نمایم
لطفا اگه آموزش یا سایتی که کدهای ترکیبی سرچ را داشته باشه معرفی کنید...
و روش استفاده از تکنولوژی لینک بشه سرچ (منظورم کدهاس) ترکیبی انجام داد بفرمایید اگه نمونه کدی داری ممنون میشم بزارید
مثال: من میخوام سرچ را بر اساس استان> شهرستان و نمرات دانش آموزان از تاریخ تا تاریخ فلان داشته باشم .این سرچ میخوام کدش نمیدونم چطور بنویسم از انتیتی یا لینک فرقی نمیکنه فقط کسی از دوستان اگر میتونه کمک کنه ممنون میشم .
ایجاد جستجوی ترکیبی در سی شارپ
ایجاد جستجوی ترکیبی توسط انتیتی فریم ورک خیلی ساده هست. توی این آموزش این کار انجام شده. نمونه اش رو براتون قرار می دم.
خب شما اگر میخواید بین استان، شهرستان و نمرات دانش آموزان از تاریخ تا تاریخ جستجو انجام بدید اول باید یک کوئری رو بنویسید که شامل همه این فیلدها باشه. ممکنه نیاز داشته باشید که Join انجام بدید بین جداولتون.
در کوئری زیر فرض کردیم که 4 جدول داریم :
- جدول CityTbl : شامل لیست شهرها
- جدول ProvienceTbl : شامل لیست استانها
- جدول StudentTbl : شامل لیست دانش آموران
- جدول ScoreTbl : شامل لیست نمرات و تاریخ آنها
public List<StudentViewModel> StudentList(int ProvienceID, int CityID, DateTime fromdate, DateTime todate)
{
var Query = (from s in _context.StudentTbl
join sc in _context.ScoreTbl on s.studentId equals sc.studentId
join p in _context.ProvienceTbl on s.studentId equals p.studentId
join c in _context.CityTbl on p.provienceid equals c.provienceid
where SL.userId_reciever == userId_reciever
select new StudentViewModel()
{
cityName = c.CityName,
cityid = c.cityid,
provienceName = p.provienceName,
provienceid = p.provienceid,
studentName = s.studentName,
studentid = s.studentid,
score = sc.score,
scoreDate = sc.scoreDate
}).AsEnumerable();
}
خب در بالا 4 جدول لا هم جوین شدن و نتیجه اونها در یک ViewModel به نام StudentViewModel ذخیره شده. بنابراین شما نیاز دارید که یک ویومدل با این نام و با فیلدهایی که در کوئری بالا استفاده شده هم داشته باشید:
public class StudentViewModel
{
public string cityName {get; set;}
public int cityid {get; set;}
public string provienceName {get; set;}
public int provienceid {get; set;}
public string studentName {get; set;}
public int studentid {get; set;}
public int score {get; set;}
public DateTime scoreDate {get; set;}
}
پس تا اینجای کار هم کوئری رو داریم که با انتیتی فریم ورک نوشته شده و هم ویومدل را داریم. خب حالا به راحتی میتونیم در نتیجه کوئری جستجو انجام بدیم. در واقع باید جستجو را دقیقا در همان تابع StudentList بنویسیم. بنابراین تابع ما در نهایت به صورت زیر تبدیل می شود.
public List<StudentViewModel> StudentList(int ProvienceID, int CityID, DateTime fromdate, DateTime todate)
{
var Query = (from s in _context.StudentTbl
join sc in _context.ScoreTbl on s.studentId equals sc.studentId
join p in _context.ProvienceTbl on s.studentId equals p.studentId
join c in _context.CityTbl on p.provienceid equals c.provienceid
where SL.userId_reciever == userId_reciever
select new StudentViewModel()
{
cityName = c.CityName,
cityid = c.cityid,
provienceName = p.provienceName,
provienceid = p.provienceid,
studentName = s.studentName,
studentid = s.studentid,
score = sc.score,
scoreDate = sc.scoreDate
}).AsEnumerable();
if (CityID != 0)
{
Query = Query.where(q => q.CityID == CityID);
}
if (ProvienceID != 0)
{
Query = Query.where(q => q.ProvienceID == ProvienceID );
}
if (fromdate != null)
{
Query = Query.Where(q => q.scoreDate.Date >= fromdate);
}
if (todate != null)
{
Query = Query.Where(q => q.scoreDate.Date <= todate);
}
return Query.ToList();
}
در نهایت بعد از فیلتر اطلاعات خروجی در return تابع برگشت داده می شود.
سلام دوست عزیز ممنون که وقت گذاشتی و جواب دادید...
من چند بار امتحان کردم نشد.. یعنی من زیاد مسلط نیستم توضیحات شما کامله..
اگه ممکنه ایمیل بزارید که من پروژه بفرستم خدمتتون و هزینش هم پرداخت میکنم هر چی حق شما باشه.
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول