第134回 LINQとラムダ式 その2
公開日:2015-02-05 更新日:2019-05-11
1. 概要
独り言によるプログラミング講座、「第134回 LINQとラムダ式 その2」です。
「第133回 LINQとラムダ式 その1」の続きです。
LINQを使って、配列やリストからデータの抽出、加工を行う方法について説明しています。
「第133回 LINQとラムダ式 その1」の続きです。
LINQを使って、配列やリストからデータの抽出、加工を行う方法について説明しています。
2. 動画
3. 動画中に書いたソース
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//★独り言によるプログラミング講座
//■LINQとラムダ式について
//LINQ
// 配列やリスト -> 値の抽出、加工
//ラムダ式
// 引数 => 戻り値
// 引数 => { 処理; 処理; 処理; return 戻り値; }
//string s = "123,456,789";
/*
int count = 0; //カンマの数
for (int i = 0; i < s.Length; i++) {
//1文字ずつチェック
if (s[i] == ',') {
count++;
}
}
*/
//int count = s.Count(_ => _ == ',');
//int count = s.Where(_ => _ == ',').Count();
//MessageBox.Show(count.ToString());
/*
//遅延評価。まだ実行されない。式だけ定義している状態。
var list = s.Where(_ => _ == ',');
foreach(var item in list) {
MessageBox.Show(item.ToString());
}
*/
//int[] array = {1, 2, 3, 4, 5};
/*
foreach(var item in array.Where(_ => _ > 3) ) {
MessageBox.Show(item.ToString());
}
*/
/*
foreach(var item in array.Select(_ => _ * 2)) {
MessageBox.Show(item.ToString());
}
*/
/*
int count =
array.Where(_ => _ >= 3).Select(_ => _ * 2).Count();
MessageBox.Show(count.ToString());
*/
/*
for (int i = 0; i < array.Length; i++) {
MessageBox.Show(array[i].ToString());
}
*/
/*
foreach (var x in array) {
MessageBox.Show(x.ToString());
}
*/
/*
int count = array.Count(x => {
MessageBox.Show(x.ToString());
return true;
});
MessageBox.Show(count.ToString());
*/
/*
array.Select(x => {
MessageBox.Show(x.ToString());
return x;
}).Count();
*/
/*
array.Where(x => {
MessageBox.Show(x.ToString());
return true;
}).Count();
*/
/*
Array.ForEach(array, (x => {
MessageBox.Show(x.ToString());
}));
array.Count(x => {
MessageBox.Show(x.ToString());
return true;
});
*
//思考の順番
// 1 + 2 * 3 よりも、
// 2 * 3 + 1 の方がわかりやすい
*/
/*
//1,2,3,4,5 -> 3, 4
array.Skip(2).Take(2).Select(_ => _ * 2).Count( _ => {
MessageBox.Show(_.ToString());
return true;
});
*/
//★独り言によるプログラミング講座
//■LINQとラムダ式について その2
//int[] array = {1, 2, 3, 4, 5};
//int value = array.First();
//int value = array.First(_ => _ > 3);
//int value = array.Last();
/*
int value = array.Last(_ =>
5 > _ && _ > 1
);*/
//int value = array.FirstOrDefault(_ => _ > 100);
//MessageBox.Show(value.ToString());
/*
string[] array = {"123"};
string obj = array.FirstOrDefault(_ => _.Equals(""));
MessageBox.Show(obj.ToString());
*/
//int[] array = {1, 2, 3, 4, 5};
/*
int sum = array.Aggregate( (a, b) => {
MessageBox.Show(a.ToString() + " + " + b.ToString());
return a + b;
});
*/
/*
add = (a, b) => {
return a + b;
};*/
/*
int[] array = {1, 2, 3, 4, 5};
int sum = array.Aggregate(add);
MessageBox.Show(sum.ToString());
*/
/*
int max = array.Aggregate( (a, b) =>
a > b ? a : b
);
int min = array.Aggregate( (a, b) =>
a < b ? a : b
);
*/
//MessageBox.Show(min.ToString());
/*
string[] array = {"a", "b", "c"};
string result = array.Aggregate(or);
MessageBox.Show(result);
*/
/*
string[] array = {"a", "b", "c"};
string result = string.Join(" and ", array);
MessageBox.Show(result);
*/
this.Dispose();
}
Func<int, int, int> add = (a, b) => {
return a + b;
};
Func<string, string, string> add2 = (a, b) => {
return a + " and " + b;
};
Func<string, string, string> or = (a, b) => {
return a + " or " + b;
};
}
}