using System;
using System.Linq;
namespace IEnumerableDemo
{
public delegate int SomeOperation(int x, int y);
class Program
{
static int Sum(int x, int y) => x + y;
static void Main(string[] args)
{
//Örnek SomeOperation iki int girdi alarak int döndüren bir delegatedir.
//Burada SomeOperation türüne add metodunu tanımladık.
SomeOperation add = Sum;
Console.WriteLine(add(10, 10));
/*
ÇIKTI:
20
*/
//Func .net içerisine eklenmiş hazır delegate metodlardır.
//public delegate TResult Func<in T, out TResult>(T arg); gibi 16 girdi
//ve bir çıktıya kadar destekleyecek şekilde tanımlanmış generic bir delgatedir.
//Yukarıda delegate tanımlayarak yaptığımız işlemi delegate
//tanımlamadan hazır Func delegatesini kullanarak yazdık;
Func<int, int, int> addF = Sum;
Console.WriteLine(addF(10, 10));
/*
ÇIKTI:
20
*/
//Lambda Fonksiyonları da aslında birer delegate metodlardır.
//Örnekler
Func<int, string> func1 = (x) => string.Format("string = {0}", x);
Func<bool, int, string> func2 = (b, x) => string.Format("string = {0} and {1}", b, x);
Func<double> func3 = () => Math.PI / 2.0;
Func<int> getRandomNumber = () =>
{
var r = new Random().Next(1, 100);
return r;
};
Console.WriteLine(func1.Invoke(1));
Console.WriteLine(func2.Invoke(true, 2));
Console.WriteLine(func3.Invoke());
/*
ÇIKTI:
string = 1
string = True and 2
1,5707963267949
*/
Console.WriteLine(getRandomNumber());
//Kullanımı için lambda fonksiyonları güzel bir örnektir.
//Yazılabilecek filtreleme ve seçimi işleme işlemlerini
//Func ile yazarak çeşitli yerlerde kulllanabiliriz..
//Filtreleme için yazıldı. Çift Sayıları Seç
Func<int, bool> evenNumbers = (x) => x % 2 == 0;
//Seçimi İşleme Tersine Çevir ve String Türüne Dönüştür.
Func<int, string> reciprocal = (x) => $"{ x } + {-1 * x} = 0";
int[] values = { 1, 2, 3, 4, 5, 6 };
var res = values.Where(evenNumbers).Select(reciprocal);
foreach (var item in res)
Console.WriteLine(item);
/*
ÇIKTI:
2 + -2 = 0
4 + -4 = 0
6 + -6 = 0
*/
}
}
}
Linq etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Linq etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
6 Mart 2018
C# Func Nedir?
5 Mart 2018
Linq: OrderBy, ThenBy Kullanımı ve Farkı
using System;
using System.Collections.Generic;
using System.Linq;
namespace TestOrderByThenBy
{
class Program
{
static void Main(string[] args)
{
var list = Foo.GenerateList(10);
foreach (var item in list)
Console.WriteLine(item);
/* INITIAL
A:3 B:1 C:3 D:1
A:4 B:1 C:4 D:1
A:4 B:2 C:4 D:2
A:4 B:2 C:0 D:2
A:0 B:3 C:0 D:3
A:0 B:3 C:1 D:3
A:1 B:3 C:1 D:4
A:1 B:4 C:1 D:4
A:2 B:4 C:2 D:0
A:2 B:0 C:2 D:0
*/
Console.WriteLine("--------------OrderBy(q => q.A).OrderBy(q => q.B).OrderBy(q => q.C).OrderBy(q => q.D)-----------------");
foreach (var item in list.OrderBy(q=>q.A).OrderBy(q=>q.B).OrderBy(q=>q.C).OrderBy(q=>q.D))
Console.WriteLine(item);
/* ORDER BY
A:3 B:0 C:3 D:0
A:3 B:1 C:3 D:1
A:4 B:1 C:4 D:1
A:4 B:2 C:0 D:2
A:4 B:2 C:4 D:2
A:0 B:2 C:0 D:3
A:0 B:3 C:1 D:3
A:1 B:3 C:1 D:4
A:1 B:4 C:1 D:4
A:2 B:4 C:2 D:4
*/
Console.WriteLine("-----------------.OrderBy(q => q.A).ThenBy(q => q.B).ThenBy(q => q.C).ThenBy(q => q.D)-----------------");
foreach (var item in list.OrderBy(q => q.A).ThenBy(q => q.B).ThenBy(q => q.C).ThenBy(q => q.D))
Console.WriteLine(item);
/*
A:0 B:2 C:0 D:3
A:0 B:3 C:0 D:3
A:1 B:3 C:1 D:4
A:1 B:4 C:1 D:4
A:2 B:0 C:2 D:0
A:3 B:0 C:3 D:0
A:3 B:1 C:3 D:1
A:3 B:1 C:4 D:1
A:4 B:2 C:0 D:2
A:4 B:2 C:4 D:2
*/
}
public class Foo
{
public int A { get; set; }
public int B { get; set; }
public int C { get; set; }
public int D { get; set; }
static int seed = 0;
public override string ToString()
{
return $"A:{A} \t B:{B} \t C:{C} \t D:{D} \t";
}
public static IEnumerable GenerateList(int count)
{
for (int i = 0; i < count; i++)
{
yield return new Foo()
{
A = new Random(seed++).Next(5),
B = new Random(seed++).Next(5),
C = new Random(seed++).Next(5),
D = new Random(seed++).Next(5)
};
}
}
}
}
}
Kaydol:
Kayıtlar (Atom)