Visual Studio Code'da Linq Ile Pratik Kodlar - Bora Kaşmer

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.

Untitled

İ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.

Result

  1. Aşağıdaki örnekte “minusArray” dizisine “Repeat(-1,10)” methodu ile “-1” değeri 10 tekrar ile ilgili diziye atılır.
  2. “positiveArray” dizisine “Range(0,10)”  methodu ile “0”‘dan başlıyarak “9” değerine kadar bir artarak ilgili diziye atılır.
  3. “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:

run

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();

run2

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.

row

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.

conv

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.

sv

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.

resim

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.

Multicolon

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.

screen

<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 :

convert

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
Herkes Görsün:Twitter0Facebook0LinkedIn0

Từ khóa » Visual Studio Hazır Kodlar