دستور between در linq و کاربرد آن در گزارش

ارسال شده توسط: حسین درویشی Comments: 0

دستور between در linq و کاربرد آن در گزارش

یکی از جذابترین و مهمترین قسمت های سی شارپ کار با دستورات LINQ است. با استفاده از این دستورات می توان کوئری های کوتاهی را به SQL SERVER فرستاد. در ادامه قصد داریم تا یکی از این دستورات که دستور between در linq است کار کنیم.

روش کار با دستور between در linq

قبل از ادامه کار ابتدا یادآوری می کنیم روش کار با between در sql server. در غیر اینصورت میتونید از عنوان معادل دستور between در linq شروع کنید.

دستور BETWEEN چیست؟

از این دستور در SQL SERVER می توان برای انتخاب رکوردها یا اطلاعات مابین دو بازه انتخاب کرد. به فرض مثال در گزارش ها کاربرد بیشتری دارد.

مثلاً گزارش صورتحساب کارت بانکی از تاریخ فلان تا تاریخ فلان.

ساختار دستور BETWEEN در SQL

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

در ابتدا در قسمت column_name نام ستون را مشخص می کنید که قرار است در یک بازه زمانی انتخاب شود، سپس نام جدول در قسمت table_name باید مشخص گردد.

دوباره باید نام ستون دیگری در قسمت column_name بعد از where مشخص کنید؛ توسط این ستون دو مقدار را مشخص خواهیم کرد که بازه ما را تشکیل می دهند. پس از آن باید دو مقدار در قسمت value1 , value2 مشخص گردند.

مثال دستور BETWEEN در SQL

برای مثال جدول زیر را با نام product در نظر بگیرید.

جدول محصولات در sql server

قصد داریم تمام محصولات با قیمت 10 تا 20 را انتخاب کنیم:

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;

خروجی:

سوالی که در این میان ذهن ما را مخشوش می کند چگونگی استفاده از این دستور در LINQ می باشد.

معادل دستور between در linq با سی شارپ

بسته به نوع داده ستون مورد نظر شما بستگی دارد. اگر یک ستونی مانند قیمت داشته باشم و بازه من در قیمت باشد نحوه استفاده از آن بسیار ساده است:

مثال linq در نوع داده int

وقتی نوع داده ما از نوع int باشد:

public object GetPrice(int price1, int price2)
{            
var getPrice =
(from u in db.tbl_product
where u.price >= price1 &&
u.price <= price2
select u).ToList();
return getPrice ;
}

براحتی می توانیم بگیم که انتخاب کن ستون هایی که:

  1. قیمت اولی کوچکتر یا مساوی قیمت های در جدول product باشد.
  2. و قیمت دومی بزرگتر یا مساوی قیمت های در جدول product باشد.

وقتی نوع داده ما از نوع string باشد

اما اگر پارامتر مورد نظر ما تاریخ شمسی باشد و چون تاریخ شمسی در دیتابیس با نوع داده string ثبت می شود نمی توان از ساختار اولی استفاده کرد و باید از ساختار زیر استفاده کنید:

public object GetPrice(int date1, int date2)
{            
var getPrice =
(from u in db.tbl_product
where u.date.CompareTo(date1) >= 0 &&
u.date.CompareTo(date2) <= 0
select u.price).ToList();
return getPrice ;
}

برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *