Bi xêr hatî, Mêvan!

Ji bo gihîştina naveroka forûmê û hemî karûbarên me, divê hûn xwe tomar bikin an têkevin forumê. Endamtiya forûmê bi tevahî belaş e.

C# C# Linq

Lonw Karda

Endam
24 Çile 2021
5
Mûş
C# Linq

Çawa ku em di sql de bi kodên-query yên sql'ê dikarin bigihejin dane-data'yan, heman şiklî em di c# ê de jî dikarin di nav lîsteyan de daneyan xwe bi query'yan bigerin. wiya ji me ra hesaniyek mezin peyda dike û c# bi wê taybetmendiyê ji zimanên din vediqete.

ji bo bikaranîna Library' ya Linq divê em wê tevî(daxilê) projeyê xwe bikin.

"using System.Linq;" wî hevokê li serê koda xwe binivîsin ku hunê bikaribin fonksiyonên Linq' ê bikarbînin.


ji bo vegotina fonksiyonên Linq emê wê lîsteyê bikarbînin;

C#:
List<Product> products = new List<Product> {
            new Product{ProductId =1, CategoryId=1,ProductName ="Apple Notebook", UnitPrice=12000,UnitInStock=15},
            new Product{ProductId =2, CategoryId=1,ProductName ="Hp Notebook", UnitPrice=5000,UnitInStock=3},
            new Product{ProductId =3, CategoryId=2,ProductName ="Huawei Notebook", UnitPrice=8000,UnitInStock=2},
            new Product{ProductId =4, CategoryId=2,ProductName ="Samsung Phone", UnitPrice=5000,UnitInStock=65},
            new Product{ProductId =5, CategoryId=2,ProductName ="Xiaomi Phone", UnitPrice=1850,UnitInStock=1}
            };
(ji bo ku wî lîste error nede divê projeya we de class'a "Product" hebe, ji bo kodên class'a Product bersiv-şîroveya yekeminê binerin. herin binê wê entry'yê. û yên duyemin gava ku List bikartînin Library ya "using System.Collections.Generic;"jî tevî kodê xwe bikin.)

Fonksiyon-Query' yên Linq'ê

SingleOrDefault()


ji mera hebek item(nesne) dide. Gelemperî ji bo jêbirina item'an tê bikaranîn.
C#:
Product productToDelete = products.SingleOrDefault(p => p.ProductId ==product.ProductId);
products.Remove(productToDelete);


Any()
bi wê fonksiyonê em dikarin bizanin ku item'ek di nava listeyê da heye yan tuneye. bersiva fonksiyon bool'e.

C#:
Var result = products.Any(p=> p.ProductName=="Apple Notebook");
Console.WriteLine(result); // ji ekranê ra True dinivîse

Find()

ji me ra item(nesne) ya ku em digerin dide.
C#:
var result = products.Find(p=> p.productId==3);
Console.WriteLine(result.ProductName);
bi wê bikaranînê de ji me ra di nav lîsteya products de item(nesne) ya ku productId' ya wî 3 ye ji me ra dide. heke productId' ya tu item 3 nebe ji me ra "null" dişîne.

FindAll()

FindAll() ji me ra hemu item ku ji şertên me ra li hev tê, ji me ra dide.

C#:
]var result = products.FindAll(p=> p.ProductName.Contains("Notebook"));
li vir result listeyekê ye û em dikarin di nav wê da bi xêra foreach bigerin.

nişe: Find() û FindAll() bê library ya Linq jî tê bikaranîn.

Where()

wî metot jî me ra hemu item ku ji şertên me ra li hev tê, ji me ra dide.

C#:
var result = products.Where(p=>p.ProductName.Contains("Notebook")); //heger hunê bixwazin encama fonksiyon List bibe divê hun dawiya kodê ".ToList();" binivisîn. ---->List<Product> result= products.Where(p=>p.ProductName.Contains("Notebook")).ToList();

foreach(var product in result)
{
Console.WriteLine(product.ProductName);
}

li Wê derê ji mera listeya hemu Notebook'an dide. lê bi rêza lîsteya products'ê dide, heger em bixwazin ku ji me ra bi rêza cuda bide, emê çi bikin?

C#:
var result = products.Where(p=>p.ProductName.Contains("Notebook")).OrderBy(p=>p.UnitPrice);

wiya ji me ra listeyekê li gorî nirxa UnitPrice dide. ji UnitPrice'a herî biçuk destpê dike heta heri mezin.

C#:
var result = products.Where(p=>p.ProductName.Contains("Notebook")).OrderByDescending(p=>p.UnitPrice);

wiya jî ji UnitPrice'a herî mezin destpê dike heta heri biçuk diçe.

temam em wana çêkir lê heke itemên UnitPrice'a wan yeksan be çi dibe. wana jî bi rêza lîsteya products ê ji mera dide. hekê emê bixwazin ku wana jî li gorî şertekî rêz bikin emê wiya bikartînin;

C#:
var result = products.Where(p=>p.ProductName.Contains("Notebook")).OrderByDescending(p=>p.UnitPrice).ThenBy(p=>p.ProductName);
bi rêza alfabetîk dide.

C#:
var result = products.Where(p=>p.ProductName.Contains("Notebook")).OrderByDescending(p=>p.UnitPrice).ThenByDescending(p=>p.ProductName);
bi rêza eks(ters) alfabetîk dide.


ji bilî bikaranîna ku li jor hatiye vegotin, bikaranînek din jî heye;

C#:
var result = from p in products
         where p.UnitPrice>6000
         orderby p.UnitPrice
         select  p;

foreach(var product in result)
{
Console.WriteLine(product.ProductName);
}
 
Sererastkirina dawî:

Lonw Karda

Endam
24 Çile 2021
5
Mûş
ji bo bikaranîna kodên li jorê divê hun bi navê "Product" class' ek vekin. Divê naveroka class ahakî bibe;

C#:
public class Product
    {
        public int ProductId { get; set; }
        public int CategoryId { get; set; }
        public string ProductName { get; set; }
        public short UnitInStock { get; set; }
        public decimal UnitPrice { get; set; }
    }
 
Ji aliyê mederator hate sererastkirin: