LINQ

where蜿・

using System.Linq;

int[] array = { 3, -5, -1, 0, 2 };

foreach (int elm in array) Console.WriteLine(elm);
竊3, -5, -1, 0, 2

繧ッ繧ィ繝ェ螟画焚 = 繧ッ繧ィ繝ェ蠑
var pos =
from n in array
where n > 0
select n;

foreach (int elm in pos) Console.WriteLine(elm);
竊3, 2

using System.Linq;

int[] array = { 3, -5, -1, 0, 2 };

var pos = array.Where(n => n > 0).Select(n => n);

foreach (int elm in pos) Console.WriteLine(elm);
竊3, 2

orderby蜿・

int[] array = { 3, -5, -1, 0, 2 };

var pos =
縲from n in array
縲where n > 0
orderby n

foreach (int elm in pos) Console.WriteLine(elm);
竊2, 3

orderby n ascending 窶サ繝繝輔か繝ォ繝
orderby n descending

int[] array = { 3, -5, -1, 0, 2 };

var pos = array.Where(n => n > 0).OrderBy(n => n).Select(n => n);

foreach (int elm in pos) Console.WriteLine(elm);
竊2, 3

OrderBy(n => n)
OrderByDescending(n => n)

select蜿・

隕∫エ繧貞刈蟾・縺励※謖螳

int[] array = { 3, -5, -1, 0, 2 };

var pos =
縲from n in array
select Math.Abs(n) 窶サabs:邨カ蟇セ蛟、
縲select n;

foreach (int elm in pos) Console.WriteLine(elm);
竊3, 5, 1, 0, 2

int[] array = { 3, -5, -1, 0, 2 };

隕∫エ繧貞刈蟾・縺励※謖螳
var pos = array.Select(n => Math.Abs(n)).OrderBy(n => n);

foreach (int elm in pos) Console.WriteLine(elm);
竊0, 1, 2, 3, 5

繧ッ繝ゥ繧ケ隕∫エ繧呈欠螳

class MyClass
{
縲public int myInt { get; private set; }
縲public MyClass(int prm)
縲{
縲縲this.myInt = prm;
縲}
}

static void Main(string[] args)
{

縲MyClass[] myClass = {
縲縲new MyClass(5),
縲縲new MyClass(10),
縲縲new MyClass(15)
縲};

縲var myInt =
縲縲from n in myClass
縲縲select n.myInt;

縲foreach (var elm in myInt) Console.WriteLine(elm);
竊5, 10, 15
}

class MyClass
{
縲public int myInt { get; private set; }
縲public MyClass(int prm)
縲{
縲縲this.myInt = prm;
縲}
}

static void Main(string[] args)
{

縲MyClass[] myClass = {
縲縲new MyClass(5),
縲縲new MyClass(10),
縲縲new MyClass(15)
縲};

縲var pos = myClass.Select(n => n.myInt);

縲foreach (var elm in myInt) Console.WriteLine(elm);
竊5, 10, 15
}

蛻・繧ッ繝ゥ繧ケ縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ繧呈欠螳

class HerClass
{
縲public int herInt { get; private set; }

縲public HerClass(int prm)
縲{
縲縲this.herInt = prm*2;
縲}
}

static void Main(string[] args)
{

縲MyClass[] myClass = {
縲縲new MyClass(5),
縲縲new MyClass(10),
縲縲new MyClass(15)
縲};

var myInt =
縲from n in myClass
select new HerClass(n.myInt);

foreach (var elm in myInt) Console.WriteLine(elm.herInt);
竊10, 20, 30
}

class HerClass
{
縲public int herInt { get; private set; }

縲public HerClass(int prm)
縲{
縲縲this.herInt = prm*2;
縲}
}

static void Main(string[] args)
{

縲MyClass[] myClass = {
縲縲new MyClass(5),
縲縲new MyClass(10),
縲縲new MyClass(15)
縲};

var pos = myClass.Select(n => new HerClass(n.myInt));

foreach (var elm in myInt) Console.WriteLine(elm.herInt);
竊10, 20, 30
}

group蜿・

string[] array = { "蜈オ蠎ォ逵", "隘ソ螳ョ蟶", "蟆シ蟠主ク", "螂郁憶逵", "闃ヲ螻句ク", "逾樊虻蟶", "貊玖ウ逵", "螟ァ豢・蟶", "蠖ヲ譬ケ蟶" };

var place =
縲from n in array
group n by n.Substring(2);
3譁蟄礼岼縺ァ蛻鬘

foreach (var elm in place)
{
// 隕ェ隕∫エ.Key
縲Console.WriteLine(elm.Key);

// 蟄占ヲ∫エ
縲foreach (var e in elm)
縲{
縲縲Console.WriteLine(e);
縲}
}


隕ェ隕∫エ.Key
蜈オ蠎ォ逵
螂郁憶逵
貊玖ウ逵
隕ェ隕∫エ.Key
隘ソ螳ョ蟶
蟆シ蟠主ク
闃ヲ螻句ク
逾樊虻蟶
螟ァ豢・蟶
蠖ヲ譬ケ蟶

string[] array = { "蜈オ蠎ォ逵", "隘ソ螳ョ蟶", "蟆シ蟠主ク", "螂郁憶逵", "闃ヲ螻句ク", "逾樊虻蟶", "貊玖ウ逵", "螟ァ豢・蟶", "蠖ヲ譬ケ蟶" };

var pos = array.GroupBy(n => n.Substring(2));
3譁蟄礼岼縺ァ蛻鬘

foreach (var parent in pos)
縲foreach (var child in parent )
縲縲Console.WriteLine(child);


蜈オ蠎ォ逵
螂郁憶逵
貊玖ウ逵
隘ソ螳ョ蟶
蟆シ蟠主ク
闃ヲ螻句ク
逾樊虻蟶
螟ァ豢・蟶
蠖ヲ譬ケ蟶

join蜿・

select蜿・縺ォfrom蜿・縺ョ隕∫エ繧呈欠螳

class Item
{
縲public int ItemId { get; private set; }
縲public string ItemNm { get; private set; }

縲public Item(int prmId, string prmNm)
縲{
縲縲this.ItemId = prmId;
縲縲this.ItemNm = prmNm;
縲}
}

class StockInfo
{
縲public int ItemId { get; private set; }
縲public bool InStock { get; private set; }

縲public StockInfo(int prmId, bool prmInStock)
縲{
縲縲this.ItemId = prmId;
縲縲this.InStock = prmInStock;
縲}
}

static void Main(string[] args)
{

縲Item[] items = {
縲縲new Item(prmId: 1, prmNm: @”C#”),
縲縲new Item(prmId: 2, prmNm: @”JavaScript”),
縲縲new Item(prmId: 3, prmNm: @”C++”)
縲};

縲StockInfo[] stockInfo = {
縲縲new StockInfo(prmId: 1, prmInStock: true),
縲縲new StockInfo(prmId: 2, prmInStock: false),
縲縲new StockInfo(prmId: 3, prmInStock: true)
縲};

縲var list =
縲縲from item in items
縲縲join info in stockInfo
縲縲縲on item.ItemId equals info.ItemId
縲縲where info.InStock == true
縲縲select item.ItemNm;

縲foreach (var elm in list) Console.WriteLine(elm);
}

C#
C++

select蜿・縺ォ蛻・繧ッ繝ゥ繧ケ縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ繧呈欠螳

class ItemList
{
縲public string ItemNm { get; private set; }
縲public bool InStock { get; private set; }

縲public ItemList(string prmNm, bool prmInStock)
縲{
縲縲this.ItemNm = prmNm;
縲縲this.InStock = prmInStock;
縲}縲
}

static void Main(string[] args)
{

縲var list =
縲縲from item in items
縲縲join info in stockInfo
縲縲縲on item.ItemId equals info.ItemId
縲縲select new ItemList(prmNm:item.ItemNm, prmInStock: info.InStock);

縲foreach (var elm in list)
縲{
縲縲Console.WriteLine(elm.ItemNm + “:” + elm.InStock);
縲}
}

C#:True
JavaScript:False
C++:True

class ItemList
{
縲public string ItemNm { get; private set; }
縲public bool InStock { get; private set; }

縲public ItemList(string prmNm, bool prmInStock)
縲{
縲縲this.ItemNm = prmNm;
縲縲this.InStock = prmInStock;
縲}縲
}

static void Main(string[] args)
{

縲var list = items.Join(
縲縲stockInfo,
縲縲n => n.ItemId,
縲縲m => m.ItemId,
縲縲(n, m) => new ItemList(prmNm: n.ItemNm, prmInStock:m.InStock));

縲foreach (var elm in list) Console.WriteLine(elm.ItemNm + ":" + elm.InStock);
}

C#:True
JavaScript:False
C++:True

select蜿・縺ォ蛹ソ蜷阪け繝ゥ繧ケ縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ繧呈欠螳

static void Main(string[] args)
{

縲var list =
縲縲from item in items
縲縲join info in stockInfo
縲縲縲on item.ItemId equals info.ItemId
縲縲select new { ItemNm = item.ItemNm, InStock = info.InStock };

縲foreach (var elm in list)
縲{
縲縲Console.WriteLine(elm.ItemNm + “:” + elm.InStock);
縲}
}

C#:True
JavaScript:False
C++:True

static void Main(string[] args)
{

縲var list = items.Join(
縲縲stockInfo,
縲縲n => n.ItemId,
縲縲m => m.ItemId,
縲縲(n, m) => new { ItemNm = n.ItemNm, InStock = m.InStock });

縲foreach (var elm in list) Console.WriteLine(elm.ItemNm + ":" + elm.InStock);
}

C#:True
JavaScript:False
C++:True

繧ッ繧ィ繝ェ縺ョ螳溯。後ち繧、繝溘Φ繧ー

int[] array = { 3, -5, -1, 0, 2 };
var pos =
縲from n in array
縲where n > 0
縲select n;
縺薙ョ譎らせ縺ァ縺ッ繧ッ繧ィ繝ェ縺ッ螳溯。後&繧後※縺翫i縺壹√け繧ィ繝ェ螟画焚縺ォ蛟、縺ッ譬シ邏阪&繧後※縺縺ェ縺
foreach (int elm in pos) Console.WriteLine(elm);
竊3, 2
array[1] *= -1;
array[2] *= -1;
繝繝シ繧ソ繧ス繝シ繧ケ繧貞、画峩
foreach (int elm in pos) Console.WriteLine(elm);
竊3, 5, 1, 2
繝繝シ繧ソ繧ス繝シ繧ケシ壹け繧ィ繝ェ蠑上′螟牙喧縺吶k縺ィ繧ッ繧ィ繝ェ螟画焚繧ょ、牙喧縺励※縺繧九

intoシ壹け繧ィ繝ェ縺ョ謗・邯

var place =
縲from n in array
縲group n by n.Substring(2)
into m
縲where m.Count() <= 3
隕∫エ謨ー縺3莉・荳九ョ繧ー繝ォ繝シ繝励↓邨槭k
縲select m;

foreach (var elm in place)
{
縲foreach (var e in elm) Console.WriteLine(e);
}


蜈オ蠎ォ逵
螂郁憶逵
貊玖ウ逵

letシ壹け繧ィ繝ェ螟画焚

string[] strArray = { "隘ソ螳ョ", "蟆シ蟠", "闃ヲ螻" };

var strs =
縲from n in strArray
縲select n;

foreach (var elm in strs) Console.WriteLine(elm);

隘ソ螳ョ
蟆シ蟠
闃ヲ螻

var chrs =
縲from n in strArray
let chrArray = n.ToCharArray()
譁蟄怜怜梛隕∫エ竊団har蝙矩榊 縺ク螟画鋤縺励√け繧ィ繝ェ螟画焚縺ォ譬シ邏
縲縲from m in chrArray
縲縲select m;

foreach (var elm in chrs) Console.WriteLine(elm);

隘ソ
螳ョ
蟆シ

闃ヲ

萓(2)
string[] strArray = { "蜈オ蠎ォ逵", "隘ソ螳ョ蟶", "蟆シ蟠主ク", "螂郁憶逵", "闃ヲ螻句ク", "逾樊虻蟶", "貊玖ウ逵", "螟ァ豢・蟶", "蠖ヲ譬ケ蟶" };

var strs =
縲from n in strArray
let place = n.Substring(2)
縲where place.Equals("逵")
縲select n
縲縲into m
縲縲select m;

foreach (var elm in strs) Console.WriteLine(elm);

蜈オ蠎ォ逵
螂郁憶逵
貊玖ウ逵

Follow me!

谺。縺ョ險倅コ

LINQ.Enumerable