Visual Studio Code'da Linq Ile Pratik Kodlar - Bora Kaşmer
Có thể bạn quan tâm
Selamlar;
Bugün size özellikle Linq ile kullandığım pratik kod parçaları ile alakalı örnekler göstermek istiyorum:
Başlamadan önce kurulması gereken paketler:
- Öncelikle Visual Studio Code indirilir.
- Node.js yok ise https://nodejs.org/en/download/ adresinden indirilir.
- Eğer kurulu değilse “npm install -g generator-aspnet” generator kurulur .
- Son olarak makinada yeoman yok ise “npm install -g yo” ile yeoman kurulur.
Visual Studio Code’da çalışmak için, bu uygulamada yeoman generator kullanmıştır. Aşağıda görüldüğü gibi “yo aspnet” komutu yazılıp “Console Application” seçilir. Daha sonra ilgili projenin adı yazılıp proje oluşturulur. Böylece ilgili Console Application, Visual Studio Code ortamı için yaratılmış olunur.
İlgili uygulamayı derleme ve çalıştırma:
- Uygulamada ilgili indirilmesi gereken paketler “dnu restore” komutu ile indirilir.
- “dnu build” komutu ile application derlenir.
- “dnx run” komutu ile de yazılmış Console Application çalıştırılır.
1-) Örnek : Dinamik Array dizileri oluşturmak.
- Aşağıdaki örnekte “minusArray” dizisine “Repeat(-1,10)” methodu ile “-1” değeri 10 tekrar ile ilgili diziye atılır.
- “positiveArray” dizisine “Range(0,10)” methodu ile “0”‘dan başlıyarak “9” değerine kadar bir artarak ilgili diziye atılır.
- “hunderedArray” dizisine “Range(0,10)” methodu ile “Select(i=>100+10*i)” linq methodu ile “0”‘dan başlayıp “9” değerine kadar bir artan “i” değeri 10 ile çarpılıp 100 değeri ile toplanır. Böylece ilgili diziye degerler 100’den sonra 10’ar 10’ar arttırılarak atılır.
Yukarıdaki resimde ekran çıktısı görülmektedir. Böylece örnek uygulamalar için çeşitli dinamik diziler oluşturulmuş olunur.
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace LinqTip { public class Program { public static void Main(string[] args) { int[] minusArray = Enumerable.Repeat(-1, 10).ToArray(); int[] positiveArray = Enumerable.Range(0, 10).ToArray(); int[] hunderedArray = Enumerable.Range(0, 10).Select(i => 100 + 10 * i).ToArray(); foreach(int item in minusArray) { Console.WriteLine(item); } Console.WriteLine("-".PadLeft(20,'-')); foreach(int item in positiveArray) { Console.WriteLine(item); } Console.WriteLine("-".PadLeft(20,'-')); foreach(int item in hunderedArray) { Console.WriteLine(item); } Console.ReadLine(); } } }1234567891011121314151617181920212223242526272829303132 | using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks; namespaceLinqTip{publicclassProgram{publicstaticvoidMain(string[]args){int[]minusArray=Enumerable.Repeat(-1,10).ToArray();int[]positiveArray=Enumerable.Range(0,10).ToArray();int[]hunderedArray=Enumerable.Range(0,10).Select(i=>100+10*i).ToArray();foreach(intitem inminusArray){Console.WriteLine(item);}Console.WriteLine("-".PadLeft(20,'-'));foreach(intitem inpositiveArray){Console.WriteLine(item);}Console.WriteLine("-".PadLeft(20,'-'));foreach(intitem inhunderedArray){Console.WriteLine(item);}Console.ReadLine();}}} |
2-) Çoklu Dizilerde Tek Bir Döngü ile Öteleme Yapmak:
2 farklı dizi için tek bir öteleme yapabilmek için “Concat()” birleştirme methodu kullanılmıştır. Örnek ekran çıktısı yukarıdaki gibidir. 2.yöntemde 2 array “Union” ile birleştirilip “arr3” değişkenine dizi olarak atılıp ekrana yazdırılmıştır.
string[] nameArray=new string[]{"Bora","Enging","Cihan","Mehmet"}; string[] nameArray2=new string[]{"Secil","Duru","Birsen","Meltem"}; //1.yol foreach (var name in nameArray.Concat(nameArray2)) { Console.WriteLine(name); } //2.Yol var arr3 = nameArray.Union(nameArray2); foreach (string n in arr3) { Console.WriteLine(n); } Console.ReadLine();1234567891011121314151617 | string[]nameArray=newstring[]{"Bora","Enging","Cihan","Mehmet"};string[]nameArray2=newstring[]{"Secil","Duru","Birsen","Meltem"}; //1.yolforeach(varname innameArray.Concat(nameArray2)){Console.WriteLine(name);} //2.Yolvararr3=nameArray.Union(nameArray2); foreach(stringninarr3){Console.WriteLine(n);}Console.ReadLine(); |
3-) Random Sayı Dizisi Oluşturma :
Aşağıdaki örnek’de rastgele 8 tane sayı oluşturulmuş ve “randomSeq” değişkenine List olarak atanmıştır.
Random rand = new Random(); var randomSeq = Enumerable.Repeat(0, 8).Select(i => rand.Next()); foreach(int number in randomSeq) { Console.WriteLine(number); } Console.ReadLine();1234567 | Random rand=newRandom();varrandomSeq=Enumerable.Repeat(0,8).Select(i=>rand.Next());foreach(intnumber inrandomSeq){Console.WriteLine(number);}Console.ReadLine(); |
4-) Düzenli sırada string oluşturmak:
Aşağıda görüldüğü gibi tüm karakterler “Enumerable.Range(0,26)” kullanılarak herbir çekilen integer “i” değeri ile ilgili alfabetik dizi oluşturulmuştur.
string str = new string( Enumerable.Range(0, 26) .Select(i => (char)('A' + i % 26)) .ToArray()); Console.WriteLine(str); Console.ReadLine();12345678 | stringstr=newstring(Enumerable.Range(0,26).Select(i=>(char)('A'+i%26)).ToArray()); Console.WriteLine(str); Console.ReadLine(); |
5-) Integer bir diziyi string bir diziye çevirme:
Eğer elinizde sayısal bir dizi varsa bunu karaktere çevirip string bir değerle birleştirmek isterseniz aşağıdaki “ConvertAll()” methodunu deniyebilirsiniz. Görüldüğü gibi “5” karakteri sayı olarak toplanmamış, var olan string karakterin yanına eklenmiştir.
var numberList=new List<int>{1,2,3,4}; List<string> strList=numberList.ConvertAll(x=>x.ToString()); foreach(string number in strList) { Console.WriteLine(number+5); } Console.ReadLine();1234567 | varnumberList=newList<int>{1,2,3,4};List<string>strList=numberList.ConvertAll(x=>x.ToString());foreach(stringnumber instrList){Console.WriteLine(number+5);}Console.ReadLine(); |
6-) Geniş çaplı bir sayı aralığında random tek sayılar üretmek:
Aşağıdaki örnekde görüldüğü gibi “ParallelEnumerable.Range()” methodu ile belli bir sırayı takip etmeyen 1000 tane tek sayı, “oddName” List<int> dizisine atılmıştır. Ayrıca “ParallelQuery<int>” cast işlemi ile her bir Parallel Execution’dan dönen sayı değeri, işleme tabi tutulup tek sayı olup olmadığna bakılmıştır. Ekran çıktısının ufak bir bölümü aşağıdaki gibidir. Ayrıca 20-2000 arasında farklı sırada toplam 1000 tane tek sayı üretilmiştir.
IEnumerable<int> oddNums = ((ParallelQuery<int>)ParallelEnumerable.Range(20, 2000)) .Where(x => x % 2 != 0) .Select(i => i); foreach (int n in oddNums) { Console.WriteLine(n); } Console.WriteLine("Total:"+oddNums.Count()); Console.ReadLine();12345678 | IEnumerable<int>oddNums=((ParallelQuery<int>)ParallelEnumerable.Range(20,2000)).Where(x=>x%2!=0).Select(i=>i); foreach(intninoddNums){Console.WriteLine(n);}Console.WriteLine("Total:"+oddNums.Count());Console.ReadLine(); |
7-) String bir değişken içinde sayısal karakterleri bulma:
Aşağıdaki 2 farklı koddla 1.sinde string karakterler içindeki “ab1k4k67c3” değierindeki, sayısal alanlar “Char.IsDigit()” methodu ile belirlenmiş ve ekrana basılmıştır. 2. örnekde her başvuru formunda kullanılan telefon bilgisine ait girilen string değişkenden, sadece sayısal alanlar “Char.IsDigit” filter ile alınmış ve ekrana basılmıştır.
string strings="ab1k4k67c3"; string result = new String(strings. Where(x => Char.IsDigit(x)).ToArray()); foreach (var num in result) { Console.WriteLine(num); } var phone = "(787) 763-6511"; phone=string.Join("", phone.ToCharArray().Where(Char.IsDigit)); Console.WriteLine("Phone:"+phone); Console.ReadLine();12345678910111213 | stringstrings="ab1k4k67c3";stringresult=newString(strings.Where(x=>Char.IsDigit(x)).ToArray()); foreach(varnum inresult){Console.WriteLine(num);}varphone="(787) 763-6511";phone=string.Join("",phone.ToCharArray().Where(Char.IsDigit));Console.WriteLine("Phone:"+phone);Console.ReadLine(); |
8-) Farklı dizilerdeki colonları tek satırda birleştirip yazmak:
Aşağıda görüldüğü gibi 4 farklı dizideki kolon bilgisi tek bir satır olarak “Zip()” methodu kullanılarak birleştirilmiş ve tek bir satır olarak ekrana basılmıştır.
var streetNo = new string[] {"A5", "A2", "A1" }; var flatNum = new int[] {08, 07, 2016, 38 }; var streetName = new string[] {"Kendi Sokak", "Bagimi Sokak", "Çözdüm Sokak" }; var city = new string[] { "ISTANBUL", "ANKARA", "IZMIR", "ANTALYA" }; var address = streetNo .Zip(flatNum, (bl, fl) => bl + ", " + fl.ToString()) .Zip(streetName, (fl, st) => fl + " , " + st) .Zip(city, (st, ct) => st + ", " + ct); foreach (var addr in address) Console.WriteLine(addr); Console.ReadLine();1234567891011121314 | varstreetNo=newstring[]{"A5","A2","A1"};varflatNum=newint[]{08,07,2016,38};varstreetName=newstring[]{"Kendi Sokak","Bagimi Sokak","Çözdüm Sokak"};varcity=newstring[]{"ISTANBUL","ANKARA","IZMIR","ANTALYA"}; varaddress=streetNo.Zip(flatNum,(bl,fl)=>bl+", "+fl.ToString()).Zip(streetName,(fl,st)=>fl+" , "+st).Zip(city,(st,ct)=>st+", "+ct); foreach(varaddr inaddress)Console.WriteLine(addr); Console.ReadLine(); |
9-) Asp.Net WebForm’da Bir ComboBox’dan Seçili Elemanları Linq İle Belirleme:
Aşağıdaki örnekde bir Asp.Net WebForm’da, secili combobox elemanları linq “where()” filter kullanılarak çekilir. Ve ekrana bastırılır. Burada amaç, webformlar üzerinde birçok element’in durumuna linq ile erişilebildiğini göstermektir.
<div> <asp:ListBox ID="ColorList" runat="server" SelectionMode="Multiple"> <asp:ListItem Value="Red" Selected="True" /> <asp:ListItem Value="Blue" /> <asp:ListItem Value="Yellow" /> <asp:ListItem Value="White" Selected="True" /> <asp:ListItem Value="Black" /> </asp:ListBox> <br /> <br /> <asp:Button ID="btnSel" runat="server" Text="Secili olanlar" onclick="btnSel_Click" /> </div> C# protected void btnSel_Click(object sender, EventArgs e) { var selItems = from ListItem li in ColorList.Items where li.Selected == true select li.Text; Response.Write("Seçili Renkler: </br>"); foreach (var item in selItems) { Response.Write(item.ToString() + "</br>"); } }123456789101112131415161718192021222324252627 | <div><asp:ListBox ID="ColorList"runat="server"SelectionMode="Multiple"><asp:ListItem Value="Red"Selected="True"/><asp:ListItem Value="Blue"/><asp:ListItem Value="Yellow"/><asp:ListItem Value="White"Selected="True"/><asp:ListItem Value="Black"/></asp:ListBox><br/><br/><asp:Button ID="btnSel"runat="server"Text="Secili olanlar"onclick="btnSel_Click"/></div>C# protectedvoidbtnSel_Click(objectsender,EventArgse){varselItems=from ListItem li inColorList.Itemswhere li.Selected==trueselect li.Text; Response.Write("Seçili Renkler: </br>");foreach(varitem inselItems){Response.Write(item.ToString()+"</br>");}} |
10-) Bir List Tipini List<A> Başka Bir List Tipine List<B>’ye Dönüştürme :
Elimizde birbirinden türemiş “person” ve “person2” sınıfları olsun. “person2” sınıfından oluşturulmuş bir List<>’e, örnek amaçlı bir oluşturulmuş bir kayıt atılmıştır. “ConvertAll()” methodu ile ilgili liste “List<Person>“‘a convert edilmiştir. Ve ortak olan “Name” ve “SurName” propertyleri Console’a yazdırılmıştır. Böylece “List<Person2>” tipindeki bir liste, kendisinden türemiş olduğu “List<Person>“‘a dönüştürülmüştür.
List<person2> listOfX=new List<person2>(); listOfX.Add(new person2(){Name="Bora",SurName="Kasmer"}); List<person> listOfY = listOfX.ConvertAll<person>(delegate(person2 item) {return (person)item;}); var _person=listOfY.FirstOrDefault(); Console.WriteLine(_person.Name + " " + _person.SurName); Console.ReadLine(); public class person { public string Name {get;set;} public string SurName {get;set;} } public class person2:person { public int ID {get;set;} }1234567891011121314151617 | List<person2>listOfX=newList<person2>();listOfX.Add(newperson2(){Name="Bora",SurName="Kasmer"});List<person>listOfY=listOfX.ConvertAll<person>(delegate(person2 item){return(person)item;});var_person=listOfY.FirstOrDefault();Console.WriteLine(_person.Name+" "+_person.SurName);Console.ReadLine(); publicclassperson{publicstringName{get;set;}publicstringSurName{get;set;}}publicclassperson2:person{publicintID{get;set;}} |
Böylece geldik bir makalenin daha sonuna. Bu makalede sizin de uygulamalarınız da kullanabileceğiniz küçük Linq kod parçacıkları örnekler ile anlatılmıştır.
Umarım işinize yarar dilekleri ile bir sonraki makalede görüşmek üzere hoşçakalın.
Source:
- https://www.it-swarm.dev/tr/c%23/bir-dizgiden-bir-numara-bul-ve-cikart/971944008/
- https://docs.microsoft.com/tr-tr/dotnet/api/system.collections.generic.list-1.convertall?view=netframework-4.6.2
- https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.zip?view=netframework-4.6.2
- https://docs.microsoft.com/tr-tr/dotnet/api/system.linq.enumerable.range?view=netframework-4.6.2
Từ khóa » Visual Studio Hazır Kodlar
-
C# Hazır Kodlar - Web Tasarım & Programlama
-
C# Kod Parçacıkları - Visual Studio (Windows) | Microsoft Docs
-
Kod Parçacığı Seçici - Visual Studio (Windows) | Microsoft Docs
-
Öğretici: C# Geliştiricileri Için Düzenleme - Visual Studio (Windows)
-
İzlenecek Yol: Kod Parçacığı Oluşturma - Visual Studio (Windows)
-
Visual Basic İçin Hazır Kodlar - Turkish Forum / Board / Blog
-
Visual Studio Hazır Kodlar | TurkHackTeam
-
Visual Studio 2015 Dersleri - 1. Bölüm - Basit Kodlar - YouTube
-
Visual Studio Code Hazır Kodlar
-
Visual Basic / Yilan Oyunu - Hazır Kod
-
Visual Studio Code Hazır Kodlar - ZA.COM