C# LINQ இல் வினவல்களை எழுதுதல்

C Linq Il Vinavalkalai Elututal



SQL ஐப் போலவே, வினவல் தொடரியலைப் பயன்படுத்தி C# LINQ இல் வினவல்களை எழுத முடியும். இந்த வினவல்கள் இணையத்தில் உள்ள C# தரவுத்தள பயன்பாடுகளில் தரவுத்தளத்திலிருந்து தரவைப் பெறவும், மூன்றாம் தரப்பு பயனர்களுக்கு இணையத்தில் காண்பிக்கவும் பயன்படுத்தப்படுகின்றன. இந்த வழிகாட்டியில், SQL போன்ற சில LINQ வினவல்களைப் பற்றி விவாதிப்போம். இதற்காக, பட்டியல் தரவு மூலத்தை உருவாக்கி அதில் உள்ள வினவல்களைப் பயன்படுத்துவோம்.

வினவல் தொடரியல்:

பொதுவான தொடரியலைப் பார்ப்போம்:

இருந்து மீண்டும் செய்பவர் உள்ளே தரவு மூலம்
தேர்ந்தெடுக்கவும் மீண்டும் செய்பவர் ;

இங்கே:







  1. Data_Source என்பது தரவை வைத்திருக்கும் பட்டியலாக இருக்கலாம்.
  2. டேட்டா_மூலத்திலிருந்து உறுப்புகளைப் பெற மறு செய்கை பயன்படுத்தப்படுகிறது.

தரவு மூலம்

இந்த முழு வழிகாட்டியிலும், பின்வரும் பதிவுகளின் பட்டியலை தரவு ஆதாரமாகப் பயன்படுத்துவோம், மேலும் அனைத்து வினவல்களும் இந்தத் தரவு மூலத்தில் மட்டுமே பயன்படுத்தப்படும். உங்கள் சூழலில் இந்தக் குறியீட்டை இயக்குவதை உறுதிசெய்து, பின்வரும் எடுத்துக்காட்டுகளுடன் வினவல் அறிக்கைகளை ஒவ்வொன்றாக நாங்கள் விவாதிக்கப் போகிறோம்:



பயன்படுத்தி அமைப்பு ;
பயன்படுத்தி அமைப்பு.தொகுப்புகள்.பொது ;
பயன்படுத்தி System.Linq ;
பயன்படுத்தி அமைப்பு.தொகுப்புகள் ;

பொது வர்க்கம் கணக்கீடுகள்
{
பொது நிலையான வெற்றிடமானது முக்கிய ( )
{
// பட்டியல் உருவாக்கம்
நாட்டின்_விலைகளைப் பட்டியலிடுங்கள் = புதிய பட்டியல் ( ) {

// பட்டியலில் 5 பதிவுகளைச் சேர்க்கவும்
புதிய விலைகள் ( ) { பொருள் = 'பழங்கள்' ,இடம் = 'அமெரிக்கா' , அளவு = 100 , செலவு = 345.78 } ,
புதிய விலைகள் ( ) { பொருள் = 'கொட்டைகள்' ,இடம் = 'இந்தியா' , அளவு = 200 , செலவு = 3645.78 } ,
புதிய விலைகள் ( ) { பொருள் = 'மற்றவைகள்' ,இடம் = 'யுகே' , அளவு = 500 , செலவு = 90.68 } ,
புதிய விலைகள் ( ) { பொருள் = 'எண்ணெய்' ,இடம் = 'அமெரிக்கா' , அளவு = 100 , செலவு = 345.78 } ,
புதிய விலைகள் ( ) { பொருள் = 'மிளகாய்' ,இடம் = 'அமெரிக்கா' , அளவு = 10 , செலவு = 67.89 } ,
} ;


ஒவ்வொரு ( இருந்தது நான் உள்ளே நாட்டின்_விலைகள் )
{
பணியகம் . ரைட்லைன் ( நான் . பொருள் + '' + நான் . இடம் + '' + நான் . அளவு + '' + நான் . செலவு ) ;
}
}
}
பொது வர்க்கம் விலைகள் {
பொது லேசான கயிறு பொருள் { பெறு ; அமைக்கப்பட்டது ; }
பொது லேசான கயிறு இடம் { பெறு ; அமைக்கப்பட்டது ; }
பொது முழு எண்ணாக அளவு { பெறு ; அமைக்கப்பட்டது ; }
பொது இரட்டை செலவு { பெறு ; அமைக்கப்பட்டது ; }
}

பதிவுகள்:







விளக்கம்:

1. பின்வரும் பண்புக்கூறுகளுடன் விலைகளை உருவாக்கவும்:

2. முக்கிய முறையுடன் 'கணக்கீடுகள்' என்ற மற்றொரு வகுப்பை உருவாக்கவும் மற்றும் நாட்டின்_விலைகள் பட்டியலை ஐந்து பதிவுகளுடன் உருவாக்கவும்.



தேர்ந்தெடு

அடிப்படையில், 'தேர்ந்தெடு' என்பது ஒரு ப்ரொஜெக்ஷன் ஆபரேட்டராகும், இது குறிப்பிட்ட தரவு மூலத்திலிருந்து பண்புகளைத் தேர்ந்தெடுக்கிறது. வினவல் 'இருந்து' என்று தொடங்குகிறது. பின்னர், தரவு மூலத்தின் மீது மீண்டும் மீண்டும் செய்யும் செயலியைக் குறிப்பிடுகிறோம். பின்னர், 'தேர்ந்தெடு' ஆபரேட்டர் குறிப்பிடப்படுகிறது.

தொடரியல்:

அனைத்து பண்புகளும்: Data_Source இல் உள்ள iterator இலிருந்து மீண்டும் மீண்டும் செய்யவும்;

குறிப்பிட்ட பண்பு: Data_Source இல் உள்ள iterator இலிருந்து iterator.attribute ஐத் தேர்ந்தெடுக்கவும்;

எடுத்துக்காட்டு 1:

பட்டியலிலிருந்து எல்லா பதிவுகளையும் தேர்ந்தெடுக்க வினவலை எழுதுவோம்.

பயன்படுத்தி அமைப்பு ;
பயன்படுத்தி அமைப்பு.தொகுப்புகள்.பொது ;
பயன்படுத்தி System.Linq ;
பயன்படுத்தி அமைப்பு.தொகுப்புகள் ;

பொது வர்க்கம் கணக்கீடுகள்
{
பொது நிலையான வெற்றிடமானது முக்கிய ( )
{
// பட்டியல் உருவாக்கம்
நாட்டின்_விலைகளைப் பட்டியலிடுங்கள் = புதிய பட்டியல் ( ) {

// பட்டியலில் 5 பதிவுகளைச் சேர்க்கவும்
புதிய விலைகள் ( ) { பொருள் = 'பழங்கள்' ,இடம் = 'அமெரிக்கா' , அளவு = 100 , செலவு = 345.78 } ,
புதிய விலைகள் ( ) { பொருள் = 'கொட்டைகள்' ,இடம் = 'இந்தியா' , அளவு = 200 , செலவு = 3645.78 } ,
புதிய விலைகள் ( ) { பொருள் = 'மற்றவைகள்' ,இடம் = 'யுகே' , அளவு = 500 , செலவு = 90.68 } ,
புதிய விலைகள் ( ) { பொருள் = 'எண்ணெய்' ,இடம் = 'அமெரிக்கா' , அளவு = 100 , செலவு = 345.78 } ,
புதிய விலைகள் ( ) { பொருள் = 'மிளகாய்' ,இடம் = 'அமெரிக்கா' , அளவு = 10 , செலவு = 67.89 } ,
} ;

//வினவலில் ஆபரேட்டரைத் தேர்ந்தெடுக்கவும்
இருந்தது தகவல்கள் = இருந்து நான் உள்ளே நாட்டின்_விலைகள்
தேர்ந்தெடுக்கவும் நான் ;

ஒவ்வொரு ( இருந்தது நான் உள்ளே தகவல்கள் )
{
பணியகம் . ரைட்லைன் ( நான் . பொருள் + '' + நான் . இடம் + '' + நான் . அளவு + '' + நான் . செலவு ) ;

}
}
}
பொது வர்க்கம் விலைகள் {
பொது லேசான கயிறு பொருள் { பெறு ; அமைக்கப்பட்டது ; }
பொது லேசான கயிறு இடம் { பெறு ; அமைக்கப்பட்டது ; }
பொது முழு எண்ணாக அளவு { பெறு ; அமைக்கப்பட்டது ; }
பொது இரட்டை செலவு { பெறு ; அமைக்கப்பட்டது ; }
}

வெளியீடு:

இங்கே, 'தேர்ந்தெடு' வினவலில் எந்தப் பண்புக்கூறையும் நாங்கள் குறிப்பிடவில்லை. 'ஃபோர்ச்' லூப்பில் உள்ள வினவலில் இருந்து (தரவு) அனைத்து பண்புக்கூறுகளையும் மறு செய்கையைப் பயன்படுத்தி எடுத்தோம்.

எடுத்துக்காட்டு 2:

இப்போது, ​​'தேர்ந்தெடு' ஆபரேட்டருக்குள் உருப்படி பண்புக்கூறைக் குறிப்பிடுவதன் மூலம் உருப்படிகளைப் பெறவும். வினவல் ' நாட்டின்_விலைகளில் உள்ள i இலிருந்து i.item ஐத் தேர்ந்தெடுக்கவும் ”.

//வினவலில் உருப்படி பண்புக்கூறைப் பெற ஆபரேட்டரைத் தேர்ந்தெடுக்கவும்
இருந்தது தகவல்கள் = இருந்து நான் உள்ளே நாட்டின்_விலைகள்
தேர்ந்தெடுக்கவும் நான் . பொருள் ;

ஒவ்வொரு ( இருந்தது நான் உள்ளே தகவல்கள் )
{
பணியகம் . ரைட்லைன் ( நான் ) ;

}

வெளியீடு:

வரி # 21 - வரி # 29:

2. எங்கே

சில நிபந்தனைகள்/களின் அடிப்படையில் தரவை வடிகட்ட விரும்பினால், வினவலில் 'தேர்ந்தெடு' விதியுடன் 'எங்கே' ஆபரேட்டரைப் பயன்படுத்தலாம். ஆனால் 'எங்கே' ஆபரேட்டர் முதலில் பயன்படுத்தப்படுகிறது, பின்னர் தேர்ந்தெடுக்கப்பட்ட ஆபரேட்டர் குறிப்பிடப்படுகிறது.

தொடரியல்:

LINQ வினவலில் உள்ள 'எங்கே' ஆபரேட்டரை எவ்வாறு பயன்படுத்துவது என்று பார்ப்போம்.

இருந்து மீண்டும் செய்பவர் உள்ளே தரவு மூலம்
எங்கே நிலை / கள்
தேர்ந்தெடுக்கவும் மீண்டும் செய்பவர் . பண்பு ;

எடுத்துக்காட்டு 1: ஒற்றை நிபந்தனை

உருப்படி பண்புக்கூறு அடிப்படையில் பதிவுகளை வடிகட்டலாம். 'எங்கே' ஆபரேட்டரில் உள்ள (==) ஆபரேட்டரை ஒரு நிபந்தனையாகப் பயன்படுத்தவும் மற்றும் 'சில்லிஸ்' உடன் இட்டேட்டரை ஒப்பிடவும். எனவே, 'மிளகாய்' தொடர்பான பதிவுகள் தேர்ந்தெடுக்கப்பட்டன.

வினா ' நாட்டின்_விலைகளில் ஐ இலிருந்து
எங்கே i.item == “மிளகாய்”
நான் தேர்ந்தெடு'

//பதிவுகளை எங்கு வடிகட்ட வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்
இருந்தது தகவல்கள் = இருந்து நான் உள்ளே நாட்டின்_விலைகள்
எங்கே நான் . பொருள் == 'மிளகாய்'
தேர்ந்தெடுக்கவும் நான் ;

ஒவ்வொரு ( இருந்தது நான் உள்ளே தகவல்கள் )
{
பணியகம் . ரைட்லைன் ( நான் . பொருள் + '' + நான் . இடம் + '' + நான் . அளவு + '' + நான் . செலவு ) ;

}

வெளியீடு:

'மிளகாய்' உருப்படியுடன் ஒரே ஒரு பதிவு மட்டுமே உள்ளது.

வரி # 21 - வரி # 30:

எடுத்துக்காட்டு 2: பல நிபந்தனைகள்

இருப்பிடம் மற்றும் அளவு பண்புகளின் அடிப்படையில் பதிவுகளை வடிகட்டலாம். அளவு 50 ஐ விட அதிகமாகவும் 300 க்கு குறைவாகவும் இருக்க வேண்டும். இடம் 'USA' ஆக இருக்க வேண்டும்.

வினா ' நாட்டின்_விலைகளில் ஐ இலிருந்து
i.quantity > 50
i. அளவு <300
எங்கே i.location == “USA”
நான் தேர்ந்தெடு'

//பல நிபந்தனைகளைக் குறிப்பிடுவதன் மூலம் பதிவுகளை எங்கு வடிகட்ட வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்
இருந்தது தகவல்கள் = இருந்து நான் உள்ளே நாட்டின்_விலைகள்
எங்கே நான் . அளவு > ஐம்பது
எங்கே நான் . அளவு < 300
எங்கே நான் . இடம் == 'அமெரிக்கா'
தேர்ந்தெடுக்கவும் நான் ;

ஒவ்வொரு ( இருந்தது நான் உள்ளே தகவல்கள் )
{
பணியகம் . ரைட்லைன் ( நான் . பொருள் + '' + நான் . இடம் + '' + நான் . அளவு + '' + நான் . செலவு ) ;

}

வெளியீடு:

முந்தைய நிபந்தனைகளுடன் பொருந்திய இரண்டு பதிவுகள் உள்ளன.

வரி # 21 - வரி # 32:

எடுத்துக்காட்டு 3: மற்றும் (&&) ஆபரேட்டர்

ஒரே நேரத்தில் பல நிபந்தனைகளைக் குறிப்பிட “மற்றும் (&&)” ஆபரேட்டரைக் குறிப்பிடலாம். அனைத்து நிபந்தனைகளும் உண்மையாக இருந்தால், அனைத்து நிபந்தனைகளையும் பூர்த்தி செய்யும் பதிவுகள் வினவல் மூலம் திருப்பி அனுப்பப்படும்.

இந்த எடுத்துக்காட்டில், அளவு 20 ஐ விட அதிகமாகவும், செலவு 67.89 ஆகவும் இருந்தால் பதிவுகளைத் தேர்ந்தெடுக்கிறோம்.

வினா ' நாட்டின்_விலைகளில் ஐ இலிருந்து
i.quantity < 20 && i.cost == 67.89
நான் தேர்ந்தெடு'

இருந்தது தகவல்கள் = இருந்து நான் உள்ளே நாட்டின்_விலைகள்
எங்கே நான் . அளவு < இருபது && நான் . செலவு == 67.89
தேர்ந்தெடுக்கவும் நான் ;

ஒவ்வொரு ( இருந்தது நான் உள்ளே தகவல்கள் )
{
பணியகம் . ரைட்லைன் ( நான் . பொருள் + '' + நான் . இடம் + '' + நான் . அளவு + '' + நான் . செலவு ) ;

}

வெளியீடு:

20க்கும் குறைவான அளவிலும் 67.89 செலவிலும் ஒரே ஒரு பதிவு மட்டுமே உள்ளது.

வரி # 21 - வரி # 29:

எடுத்துக்காட்டு 4: அல்லது (||) ஆபரேட்டர்

'அல்லது (||)' ஆபரேட்டர் ஒரு நேரத்தில் பல நிபந்தனைகளைக் குறிப்பிடவும் பயன்படுத்தப்படுகிறது. குறைந்தபட்சம் ஒரு நிபந்தனையாவது உண்மையாக இருந்தால், அந்த நிபந்தனையை பூர்த்தி செய்யும் பதிவுகள் திருப்பி அனுப்பப்படும்.

இந்த எடுத்துக்காட்டில், அளவு 300 ஐ விட அதிகமாக இருந்தால் அல்லது இருப்பிடம் 'டோக்கியோ' என்றால் நாங்கள் பதிவுகளைத் தேர்ந்தெடுக்கிறோம்.

வினா ' நாட்டின்_விலைகளில் ஐ இலிருந்து
எங்கே i. அளவு > 300 || i.location == “டோக்கியோ”
நான் தேர்ந்தெடு'

இருந்தது தகவல்கள் = இருந்து நான் உள்ளே நாட்டின்_விலைகள்
எங்கே நான் . அளவு > 300 || நான் . இடம் == 'டோக்கியோ'
தேர்ந்தெடுக்கவும் நான் ;

ஒவ்வொரு ( இருந்தது நான் உள்ளே தகவல்கள் )
{
பணியகம் . ரைட்லைன் ( நான் . பொருள் + '' + நான் . இடம் + '' + நான் . அளவு + '' + நான் . செலவு ) ;

}

வெளியீடு:

300 ஐ விட அதிகமான அளவுடன் ஒரே ஒரு பதிவு மட்டுமே உள்ளது (முதல் நிபந்தனை பொருந்தியது).

வரி # 21 - வரி # 29:

3. ஆர்டர் மூலம்

LINQ வினவினால் வழங்கப்படும் பதிவுகளை, எந்த ஒரு பண்புக்கூறுகளிலும் உள்ள மதிப்புகளின் அடிப்படையில் ஏறுவரிசை அல்லது இறங்கு வரிசையில் ஏற்பாடு செய்ய விரும்பினால், வினவலில் 'ஆர்டர் பை' ஆபரேட்டரைப் பயன்படுத்தலாம். 'தேர்ந்தெடு' ஆபரேட்டருக்கு முன் இந்த ஆபரேட்டரை நீங்கள் குறிப்பிட வேண்டும்.

தொடரியல்:

LINQ வினவலில் உள்ள 'ஆர்டர் பை' ஆபரேட்டரை எவ்வாறு பயன்படுத்துவது என்று பார்ப்போம்.

ஏறுவரிசை:

இருந்து மீண்டும் செய்பவர் உள்ளே தரவு மூலம்
உத்தரவு மூலம் மீண்டும் செய்பவர் . பண்பு ஏறும்
தேர்ந்தெடுக்கவும் மீண்டும் செய்பவர் ;

இறங்கு வரிசை:

இருந்து மீண்டும் செய்பவர் உள்ளே தரவு மூலம்
உத்தரவு மூலம் மீண்டும் செய்பவர் . பண்பு இறங்குதல்
தேர்ந்தெடுக்கவும் மீண்டும் செய்பவர் ;

எடுத்துக்காட்டு 1: ஏறுவரிசை

தரவு மூலத்திலிருந்து (பட்டியல்) அனைத்து பண்புக்கூறுகளையும் தேர்ந்தெடுத்து, அளவு பண்புக்கூறில் உள்ள மதிப்புகளின் அடிப்படையில் அவற்றை ஏறுவரிசையில் திருப்பி அனுப்பவும்.

வினா ' நாட்டின்_விலைகளில் ஐ இலிருந்து
வரிசைப்படி i. அளவு ஏறுவரிசை
நான் தேர்ந்தெடு'

இருந்தது தகவல்கள் = இருந்து நான் உள்ளே நாட்டின்_விலைகள்
ஐ மூலம் உத்தரவு . அளவு ஏறும்
தேர்ந்தெடுக்கவும் நான் ;

ஒவ்வொரு ( இருந்தது நான் உள்ளே தகவல்கள் )
{
பணியகம் . ரைட்லைன் ( நான் . பொருள் + '' + நான் . இடம் + '' + நான் . அளவு + '' + நான் . செலவு ) ;

}

வெளியீடு:

வரி # 21 - வரி # 29:

எடுத்துக்காட்டு 2: இறங்கு வரிசை

தரவு மூலத்திலிருந்து (பட்டியல்) அனைத்து பண்புக்கூறுகளையும் தேர்ந்தெடுத்து, விலை பண்புக்கூறில் உள்ள மதிப்புகளின் அடிப்படையில் அவற்றை இறங்கு வரிசையில் திருப்பி அனுப்பவும்.

வினா ' நாட்டின்_விலைகளில் ஐ இலிருந்து
வரிசைப்படி i.செலவு இறக்கம்
நான் தேர்ந்தெடு'

இருந்தது தகவல்கள் = இருந்து நான் உள்ளே நாட்டின்_விலைகள்
ஐ மூலம் உத்தரவு . செலவு இறங்குதல்
தேர்ந்தெடுக்கவும் நான் ;

ஒவ்வொரு ( இருந்தது நான் உள்ளே தகவல்கள் )
{
பணியகம் . ரைட்லைன் ( நான் . பொருள் + '' + நான் . இடம் + '' + நான் . அளவு + '' + நான் . செலவு ) ;

}

வெளியீடு:

வரி # 21 - வரி # 29:

4. வரம்பு

SQL இல் உள்ள வரம்பு, வினவல் மூலம் திரும்பப் பெறும் பதிவுகளை வரம்பிடுகிறது. இது வினவல் மூலம் திரும்பிய மேல் பதிவுகளை வழங்குகிறது. LINQ இல், Take() ஆபரேட்டருடன் Skip() ஐப் பயன்படுத்துவதன் மூலம் இதை அடையலாம். டேக்() ஆனது குறிப்பிட்ட எண்ணிக்கையிலான பதிவுகளைப் பெறுகிறது. தொடக்கப் பதிவு எண்ணைக் குறிப்பிட Skip() பயன்படுகிறது. இந்த வழியில், நாம் LINQ இல் 'வரம்பு' செயல்பாட்டை அடைய முடியும்.

தொடரியல்:

( இருந்து மீண்டும் செய்பவர் உள்ளே தரவு மூலம்
தேர்ந்தெடுக்கவும் மீண்டும் செய்பவர் ) . தவிர்க்கவும் ( n ) . எடுத்துக்கொள் ( n ) ;
  1. Skip() என்பது பதிவுகளைத் தவிர்க்கவும், மீதமுள்ள பதிவுகளைத் திரும்பப் பெறவும் பயன்படுகிறது. இது தவிர்க்கப்பட வேண்டிய உறுப்புகளின் எண்ணிக்கையைக் குறிப்பிடும் முழு எண்ணை எடுக்கும். எங்கள் விஷயத்தில், இது 0 ஆகும்.
  2. முதல் பதிவிலிருந்து 'n' எண்ணிக்கையிலான பதிவுகளை எடுக்க Take() பயன்படுகிறது.

உதாரணமாக:

வினவல் மூலம் திரும்பிய ஐந்து பதிவுகளில் முதல் மூன்று பதிவுகளைத் தேர்ந்தெடுக்கவும்.

வினா ' (நாட்டின்_விலைகளில் இருந்து
ஐ தேர்ந்தெடுக்கவும். தவிர்(0).எடுத்து(3)”

இருந்தது தகவல்கள் = ( இருந்து நான் உள்ளே நாட்டின்_விலைகள்
தேர்ந்தெடுக்கவும் நான் ) . தவிர்க்கவும் ( 0 ) . எடுத்துக்கொள் ( 3 ) ;

ஒவ்வொரு ( இருந்தது நான் உள்ளே தகவல்கள் )
{
பணியகம் . ரைட்லைன் ( நான் . பொருள் + '' + நான் . இடம் + '' + நான் . அளவு + '' + நான் . செலவு ) ;

}

}

வெளியீடு:

வரி # 21 - வரி # 28:

முடிவுரை

SQL ஐப் போன்ற C# LINQ இல் வினவல்களை எவ்வாறு எழுதுவது என்பதை நாங்கள் கற்றுக்கொண்டோம். இந்த டுடோரியலின் ஒரு பகுதியாக, தரவு மூலத்திலிருந்து பதிவுகளைத் தேர்ந்தெடுக்க 'தேர்ந்தெடு' ஆபரேட்டரை எவ்வாறு பயன்படுத்துவது என்பதை நாங்கள் விவாதித்தோம். வினவல் மூலம் திரும்பிய பதிவுகளை வடிகட்ட, நிபந்தனைகளைக் குறிப்பிடுவதன் மூலம் 'எங்கே' ஆபரேட்டரைப் பயன்படுத்தினோம். பின்னர், 'ஆர்டர் பை' ஆபரேட்டரைக் கொண்டு வினவல் மூலம் திரும்பிய பதிவுகளை எவ்வாறு வரிசைப்படுத்துவது என்பதை நாங்கள் கற்றுக்கொண்டோம். இறுதியாக, பதிவுகளை மட்டுப்படுத்த, Skip() மற்றும் Take() ஆபரேட்டர்களைப் பயன்படுத்தினோம்.