Писање упита у Ц# ЛИНК

Pisane Upita U C Link



Слично као у СКЛ-у, могуће је писати упите у Ц# ЛИНК користећи синтаксу упита. Ови упити се користе у Ц# апликацијама базе података на вебу за добијање података из базе података и приказивање на вебу корисницима треће стране. У овом водичу ћемо разговарати о неким ЛИНК упитима који су слични СКЛ-у. За ово ћемо креирати извор података листе и применити упите у њему.

Синтакса упита:

Погледајмо генеричку синтаксу:

из итератор ин Извор података
изаберите итератор ;

овде:







  1. Дата_Соурце може бити листа која садржи податке.
  2. Итератор се користи за преузимање елемената из Дата_Соурце.

Извор података

У целом овом водичу користићемо следећу листу записа као извор података и сви упити се примењују само на овај извор података. Уверите се да сте покренули овај код у свом окружењу и модификујте исказе упита следећим примерима један по један о којима ћемо разговарати:



Користећи Систем ;
Користећи Систем.Цоллецтионс.Генериц ;
Користећи Систем.Линк ;
Користећи Систем.Цоллецтионс ;

јавности класа Калкулације
{
јавности статичне празнина Главни ( )
{
// Креирање листе
Наведите земље_цене = Нова Листа ( ) {

// Додај 5 записа у листу
Нова Цене ( ) { предмет = 'воће' ,локација = 'САД' , количина = 100 , трошак = 345.78 } ,
Нова Цене ( ) { предмет = 'Ораси' ,локација = 'Индија' , количина = 200 , трошак = 3645.78 } ,
Нова Цене ( ) { предмет = 'други' ,локација = 'УК' , количина = 500 , трошак = 90.68 } ,
Нова Цене ( ) { предмет = 'уље' ,локација = 'САД' , количина = 100 , трошак = 345.78 } ,
Нова Цене ( ) { предмет = 'чили' ,локација = 'САД' , количина = 10 , трошак = 67.89 } ,
} ;


за сваки ( био и ин цоунтри_прицес )
{
Конзола . ВритеЛине ( и . предмет + ' ' + и . локација + ' ' + и . количина + ' ' + и . трошак ) ;
}
}
}
јавности класа Цене {
јавности низ предмет { добити ; комплет ; }
јавности низ локација { добити ; комплет ; }
јавности инт количина { добити ; комплет ; }
јавности дупло трошак { добити ; комплет ; }
}

Записи:







Објашњење:

1. Креирајте цене са следећим атрибутима:

2. Креирајте другу класу која је „Израчуни“ са главном методом и креирајте листу цоунтри_прицес са пет записа.



Изаберите

У основи, “селецт” је оператор пројекције који бира атрибуте из наведеног извора података. Упит почиње са „од“. Затим специфицирамо итератор који итерира преко извора података. Затим је наведен оператор 'селецт'.

Синтакса:

Сви атрибути: из итератора у Дата_Соурце изаберите итератор;

Специфични атрибут: из итератор у Дата_Соурце изаберите итератор.аттрибуте;

Пример 1:

Хајде да напишемо упит да изаберемо све записе са листе.

Користећи Систем ;
Користећи Систем.Цоллецтионс.Генериц ;
Користећи Систем.Линк ;
Користећи Систем.Цоллецтионс ;

јавности класа Калкулације
{
јавности статичне празнина Главни ( )
{
// Креирање листе
Наведите земље_цене = Нова Листа ( ) {

// Додај 5 записа у листу
Нова Цене ( ) { предмет = 'воће' ,локација = 'САД' , количина = 100 , трошак = 345.78 } ,
Нова Цене ( ) { предмет = 'Ораси' ,локација = 'Индија' , количина = 200 , трошак = 3645.78 } ,
Нова Цене ( ) { предмет = 'други' ,локација = 'УК' , количина = 500 , трошак = 90.68 } ,
Нова Цене ( ) { предмет = 'уље' ,локација = 'САД' , количина = 100 , трошак = 345.78 } ,
Нова Цене ( ) { предмет = 'чили' ,локација = 'САД' , количина = 10 , трошак = 67.89 } ,
} ;

//избор оператора у упиту
био података = из и ин цоунтри_прицес
изаберите и ;

за сваки ( био и ин података )
{
Конзола . ВритеЛине ( и . предмет + ' ' + и . локација + ' ' + и . количина + ' ' + и . трошак ) ;

}
}
}
јавности класа Цене {
јавности низ предмет { добити ; комплет ; }
јавности низ локација { добити ; комплет ; }
јавности инт количина { добити ; комплет ; }
јавности дупло трошак { добити ; комплет ; }
}

Излаз:

Овде нисмо навели ниједан атрибут у упиту „одабери“. Узели смо све атрибуте из упита (података) унутар „фореацх“ петље користећи итератор.

Пример 2:

Сада преузмите ставке тако што ћете навести атрибут ставке унутар оператора „селецт“. Упит је “ из и у цоунтри_прицес изаберите и.итем ”.

//селектујте оператор да бисте добили атрибут ставке у упиту
био података = из и ин цоунтри_прицес
изаберите и . предмет ;

за сваки ( био и ин података )
{
Конзола . ВритеЛине ( и ) ;

}

Излаз:

Ред #21 – Ред #29:

2. Где

Ако желите да филтрирате податке на основу неких услова, можете користити оператор „где“ у упиту заједно са клаузулом „селецт“. Али прво се користи оператор „где“, а затим се наводи оператор селецт.

Синтакса:

Хајде да видимо како да користимо оператор „где“ унутар ЛИНК упита.

из итератор ин Извор података
где стање / с
изаберите итератор . атрибут ;

Пример 1: Сингле Цондитион

Хајде да филтрирамо записе на основу атрибута ставке. Користите оператор једнако (==) у оператору „где“ као услов и упоредите итератор са „Чилијем“. Дакле, одабрани су записи који се односе на „Чили“.

Упит је „ фром и ин цоунтри_прицес
где и.итем == „Чили”
изаберите и”

//изаберите где да филтрирате записе
био података = из и ин цоунтри_прицес
где и . предмет == 'чили'
изаберите и ;

за сваки ( био и ин података )
{
Конзола . ВритеЛине ( и . предмет + ' ' + и . локација + ' ' + и . количина + ' ' + и . трошак ) ;

}

Излаз:

Постоји само један запис са ставком „Чили“.

Ред # 21 – Ред # 30:

Пример 2: Вишеструки услови

Хајде да филтрирамо записе на основу атрибута локације и количине. Количина треба да буде већа од 50 и мања од 300. Локација треба да буде „САД“.

Упит је „ фром и ин цоунтри_прицес
где је и.количина > 50
где је и.количина < 300
где је и.лоцатион == „САД“
изаберите и”

//изаберите где да филтрирате записе наводећи више услова
био података = из и ин цоунтри_прицес
где и . количина > педесет
где и . количина < 300
где и . локација == 'САД'
изаберите и ;

за сваки ( био и ин података )
{
Конзола . ВритеЛине ( и . предмет + ' ' + и . локација + ' ' + и . количина + ' ' + и . трошак ) ;

}

Излаз:

Постоје два рекорда која су одговарала претходним условима.

Ред # 21 – Ред # 32:

Пример 3: И (&&) Оператор

Можемо да наведемо оператор „и (&&)“ да бисмо навели више услова истовремено. Ако су сви услови тачни, упит се враћа записима који задовољавају све услове.

У овом примеру бирамо записе ако је количина већа од 20 и цена је 67,89.

Упит је „ фром и ин цоунтри_прицес
где је и.количина < 20 && и.трошак == 67.89
изаберите и”

био података = из и ин цоунтри_прицес
где и . количина < двадесет && и . трошак == 67.89
изаберите и ;

за сваки ( био и ин података )
{
Конзола . ВритеЛине ( и . предмет + ' ' + и . локација + ' ' + и . количина + ' ' + и . трошак ) ;

}

Излаз:

Постоји само један запис са количином мањом од 20 и ценом од 67,89

Ред #21 – Ред #29:

Пример 4: Или (||) Оператор

Оператор „или (||)” се такође користи за одређивање више услова у исто време. Ако је бар један услов тачан, враћају се записи који задовољавају тај услов.

У овом примеру бирамо записе ако је количина већа од 300 или је локација „Токио“.

Упит је „ фром и ин цоунтри_прицес
где је и.количина > 300 || и.лоцатион == „Токио“
изаберите и”

био података = из и ин цоунтри_прицес
где и . количина > 300 || и . локација == 'Токио'
изаберите и ;

за сваки ( био и ин података )
{
Конзола . ВритеЛине ( и . предмет + ' ' + и . локација + ' ' + и . количина + ' ' + и . трошак ) ;

}

Излаз:

Постоји само један запис са количином која је већа од 300 (први услов се подудара).

Ред #21 – Ред #29:

3. Ордер Би

Ако желите да уредите записе које враћа ЛИНК упит у растућем или опадајућем редоследу на основу вредности у било ком од атрибута, можете да користите оператор „редослед по“ у упиту. Морате да наведете овај оператор пре оператора „селецт“.

Синтакса:

Хајде да видимо како да користимо оператор „ордер би“ унутар ЛИНК упита.

Примање наруџбине:

из итератор ин Извор података
ред од стране итератор . атрибут узлазни
изаберите итератор ;

Силазним редоследом:

из итератор ин Извор података
ред од стране итератор . атрибут силазни
изаберите итератор ;

Пример 1: Примање наруџбине

Изаберите све атрибуте из извора података (листе) и вратите их растућим редоследом на основу вредности у атрибуту квантитета.

Упит је „ фром и ин цоунтри_прицес
редби и.количина растућа
изаберите и”

био података = из и ин цоунтри_прицес
ред по и . количина узлазни
изаберите и ;

за сваки ( био и ин података )
{
Конзола . ВритеЛине ( и . предмет + ' ' + и . локација + ' ' + и . количина + ' ' + и . трошак ) ;

}

Излаз:

Ред # 21 – Ред # 29:

Пример 2: Силазним редоследом

Изаберите све атрибуте из извора података (листе) и вратите их у опадајућем редоследу на основу вредности у атрибуту трошкова.

Упит је „ фром и ин цоунтри_прицес
наруџбина и.трошак опадајући
изаберите и”

био података = из и ин цоунтри_прицес
ред по и . трошак силазни
изаберите и ;

за сваки ( био и ин података )
{
Конзола . ВритеЛине ( и . предмет + ' ' + и . локација + ' ' + и . количина + ' ' + и . трошак ) ;

}

Излаз:

Ред #21 – Ред #29:

4. Лимит

Ограничење у СКЛ-у ограничава записе које враћа упит. Враћа највише записе које враћа упит. У ЛИНК-у то можемо постићи коришћењем Скип() са оператором Таке(). Таке() добија наведени број записа. Скип() се користи за одређивање почетног броја записа. На овај начин можемо постићи „граничну“ функционалност у ЛИНК-у.

Синтакса:

( из итератор ин Извор података
изаберите итератор ) . Скип ( н ) . Узми ( н ) ;
  1. Скип() се користи за прескакање записа и враћање преосталих записа. Потребан је цео број који одређује број елемената које треба прескочити. У нашем случају, то је 0.
  2. Таке() се користи за узимање 'н' броја записа из првог записа.

Пример:

Изаберите прва три записа од пет записа које враћа упит.

Упит је „ (од и у цоунтри_прицес
изаберите и).Прескочи(0).Узми(3)”

био података = ( из и ин цоунтри_прицес
изаберите и ) . Скип ( 0 ) . Узми ( 3 ) ;

за сваки ( био и ин података )
{
Конзола . ВритеЛине ( и . предмет + ' ' + и . локација + ' ' + и . количина + ' ' + и . трошак ) ;

}

}

Излаз:

Ред #21 – Ред #28:

Закључак

Научили смо како да напишемо упите у Ц# ЛИНК-у који је сличан СКЛ-у. Као део овог водича, разговарали смо о томе како да користимо оператор „селецт“ за одабир записа из извора података. Да бисмо филтрирали записе које враћа упит, користили смо оператор „где“ тако што смо навели услове. Затим смо научили како да сортирамо записе које враћа упит са оператором „ордер би“. Коначно, да бисмо ограничили записе, користили смо операторе Скип() и Таке().