13. LINQの基本
• クエリ構文
– SQLのようなクエリ式でデータを操作
int[] values = { 1, 2, 3, 4, 5 };
var q = from value in values
where value < 4
select String.Format(quot;{0:D6}quot;, value)
;
foreach (var value in q)
Console.WriteLine(value);
※この例での結果はIEnumerable<string>
わんくま同盟 http://www.wankuma.com/
18. LINQの基本
• クエリ構文とメソッド構文の使い分け
var q = from value in values
where value < 4 & value % 3 == 0
orderby value descending
select String.Format(quot;{0:D6}quot;, value)
;
var q = values
.Where(value => value < 4 & value % 3 == 0)
.OrderByDescending(value => value)
.Select(value =>
String.Format(quot;{0:D6}quot;, value))
;
わんくま同盟 http://www.wankuma.com/
19. LINQの基本
• クエリ構文とメソッド構文の使い分け
var q = from value in values
where value < 4
select value
;
var q = values.Where(value => value < 4);
わんくま同盟 http://www.wankuma.com/
24. 便利なLINQ
• Sum、Average、Max、Minメソッド
– コレクションの値の総和(Sum)、平均
(Average)、最大値(Max)、最小値
(Min)を求める
var values = Enumerable.Range(1, 20);
var sum = values.Sum();
var avg = values.Average();
var max = values.Max();
var min = values.Min();
デモで従来の方法と比較します
わんくま同盟 http://www.wankuma.com/
25. 便利なLINQ
• OrdayBy、OrderByDescendingメソッド
– コレクションを並び替えて取得する
var values = new Person[] {
new Person{ Name=quot;Taroquot;, Age=23 }
, new Person{ Name=quot;Jiroquot;, Age=17 }
, new Person{ Name=quot;Hanakoquot;, Age=21 }
, new Person{ Name=quot;Kaoruquot;, Age=15 }
};
デモで従来の方法と比較します
var orderByName = values
.OrderBy(value => value.Name);
var orderByAgeDescending = values
.OrderByDescending(value => value.Age);
わんくま同盟 http://www.wankuma.com/
26. 便利なLINQ
• Reverseメソッド
– コレクションを逆順に取得する
var values = Enumerable.Range(1, 20);
var reverseValues = values.Reverse();
デモで従来の方法と比較します
わんくま同盟 http://www.wankuma.com/
27. 便利なLINQ
• GroupByメソッド
– コレクションをグルーピングする
var values = new Sales[] { new Sales { ProductId = 1
, SalesQty = 10 }, ~ };
var groupedValues = values.GroupBy(value => value.ProductId);
デモで従来の方法と比較します
foreach (var group in groupedValues)
{
Console.WriteLine(quot;■ProductId : {0}quot;, group.Key);
int TotalSalesQty = group.Sum(value => value.SalesQty);
foreach(var value in group)
{
Console.WriteLine(value);
}
} わんくま同盟 http://www.wankuma.com/