در مطلب قبلی قراردادهای کوئری نویسی در OData و WCF Data Service - قسمت اولبا قراردادهای کوئری نویسی آشنا شدید در این مطلب به جزئیات بیشتر این قراردادها میپردازیم.
ادامه دارد...
عمگرهای منطقی
در OData نه عملگر منطقی داریم که امکان مقایسه منطقی در عباراتهای شرطی را در اختیارمان قرار میدهد.
- eq عملگر برابری
- ne عملگر مخالف
- lt عملگر کوچکتری
- le عملگر کوچکتر یا مساوی
- gt عملگر بزرگنری
- ge عملگر بزرگتر یا مساوی
- and
- or
- not
پنج عمگر ریاضی وجود دارد که امکان انجام عملیات ریاضی در کوئری را میسر میسازد.
- add جمع دو عملوند
- sub تفریق دو عملوند
- mul ضرب دو عملوند
- div تقیسم دو عملوند
- mod باقیمانده تقسیم دو عملوند
در آخر () برای گروه بنده و اولویت دهی عبارات کاربرد دارد.
توابع عبارتهای کوئری نویسی
در OData چهار دسته توابع داریم
- String Functions در جدول زیر این توابع با توضیح آن آورده شده است:
آیا رشته p0 شامل رشته p1 هست؟
مثال:http://services.odata.org//Northwind.svc/Customers?$filter=substringof('Alfreds', CompanyName) eq true
شرح: مشتریانی که نام شرکت آنها شامل رشته Alfreds باشدbool substringof(string p0, string p1) آیا رشته p0 با رشته p1 پایان مییابد؟
مثال:http://services.odata.org/Northwind/Northwind.svc/Customers?$filter=endswith(CompanyName, 'Futterkiste')
شرح: مشتریانی که نام شرکت آنها با رشته FutterKiste پایان مییابدbool endswith(string p0, string p1) آیا رشته p0 با رشته p1 آغاز میشود؟
مثال:http://services.odata.org/Northwind.svc/Customers?$filter=startswith(CompanyName, 'Alfr')
شرح: مشتریانی که نام شرکت آنها با رشته Alfer آغاز مییابدboolstartswith(string p0, string p1) محاسبه طول رشته دریافتی.
مثال:http://services.odata.org/Northwind/Northwind.svc/Customers?$filter=length(CompanyName) eq 19
شرح: مشتریانی که طول نام شرکت آنها برابر 19 باشدint length(string p0) برگشت اندیس رشته وروری
مثال:http://services.odata.org/Northwind.svc/Customers?$filter=indexof(CompanyName, 'lfreds') eq 1
شرح: مشتریانی که نام شرکت آنها با رشته lfreds که از کارکتر دوم شروع مییابدint indexof(string arg) جایگزینی یک رشته در رشته دیگر
مثال:http://services.odata.org/Northwind.svc/Customers?$filter=replace(CompanyName, ' ', '') eq 'AlfredsFutterkiste'
شرح: مشتریانی که نام شرکت آنها بدون فاصله برابر AlfredsFutterkiste باشد با پرکردن فاصله با جای خالیstring replace(string p0, string find, string replace) برگرداندن رشته ای از رشته دیگر از شماره اندیس ورودی یا از شماره اندیس تا طول رشته ورودی
مثال:http://services.odata.org/Northwind.svc/Customers?$filter=substring(CompanyName, 1) eq 'lfreds Futterkiste
شرح: مشتریانی که نام شرکت آنها از کاراکتر دوم برابر lfreds Futterkiste باشد
'http://services.odata.org/Northwind.svc/Customers?$filter=substring(CompanyName, 1,2) eq 'lfstring substring(string p0, int pos)
string substring(string p0, int pos, int length)برگرداندن رشته ورودی با کارکتر بزرگ
برگرداندن رشته ورودی با کاراکتر کوچکstring tolower(string p0)
string toupper(string p0)حذف کارکترهای Whitespace از دو طرف رشته string trim(string p0) الحاق رشته به هم string concat(string p0, string p1) - Date Functions
برگرداندن سال تاریخ ورودی
مثال:http://services.odata.org/Northwind.svc/Employees?$filter=year(BirthDate) eq 1971 نint year(DateTimep0) برگرداندن ماه تاریخ ورودی
مثال:http://services.odata.org/Northwind/Northwind.svc/Employees?$filter=month(BirthDate) eq 5int month(DateTimep0) برگرداندن روز تاریخ ورودی
برگرداندن تعداد روز فاصله زمانی
مثال: http://services.odata.org/Northwind.svc/Employees?$filter=day(BirthDate) eq 8int days(DateTimep0)
int day(DateTimep0)برگرداندن ساعت تاریخ ورودی
مثال:http://services.odata.org/Northwind.svc/Employees?$filter=hour(BirthDate) eq 4int hour(DateTimep0) برگرداندن دقیقه تاریخ ورودی
مثال:http://services.odata.org/Northwind.svc/Employees?$filter=minute(BirthDate) eq 40int minute(DateTimep0)
int minutes(DateTimep0)برگرداندن ثانبه تاریخ ورودی
مثال:http://services.odata.org/Northwind.svc/Employees?$filter=second(BirthDate) eq 40int second(DateTimep0) - Math Functions
برگرداندن سقف عدد ورودی
مثال:http://services.odata.org/Northwind.svc/Orders?$filter=ceiling(Freight) eq 32double ceiling(double p0)
decimal ceiling(decimal p0)برگرداندن کف عدد ورودی
مثال:http://services.odata.org/Northwind.svc/Orders?$filter=floor(Freight) eq 32double floor(double p0)
decimal floor(decimal p0)گردن کردن عدد ورودی
مثال:ttp://services.odata.org/Northwind.svc/Orders?$filter=round(Freight) eq 32double round(double p0)
decimal round(decimal p0) - Type Functions
برگرداندن نوع داده وروری
مثالhttp://services.odata.org/Northwind.svc/Orders?$filter=isof(Customer, NorthwindModel.MVPCustomer)
شرح: سفارشاتی که نوع مشتری آنها برابر MVPCustomer باشدboolisof(type p0)
boolisof(expression p0, type p1)تبدیل نوع داده ورودی <p0> cast(type p0)
< p1> cast(expression p0, type p1
در آخر چند نکته
- برای استفاده از رشتهها در عبارات از ' تک کوتشن استفاده نمایید
- برای دستیابی به مقادیر پروپرتیها از value$ استفاده نمایید
- برای دستیابی به آدرس روابطهای یک موجودیت از links$ استفاده نمایید
مثال:http://services.odata.org/OData/OData.svc/Categories(1)/$links/Products - select$ برای محدود کردن پروپرتیهای یک موجودیت استفاده میشود
مثال:http://services.odata.org/OData/OData.svc/Products?$select=Price,Name - از ستاره برای دستیابی به همه پروپرتیهای یک موجودیت میتوان استفاده نمود
مثال:http://services.odata.org/OData/OData.svc/Products?$select=*