お知らせ
2020年1月20日
C#でLINQ式を扱う① Where

最近C#で開発を行っていて、LINQ式が便利で楽しいのでごく一部を紹介します。
.NET Frameworkは神様(冗談)なので、便利なモノを色々用意してくれています。
リストに格納されているある条件のモノを取り出したい場合、ぐるぐる回して「if 条件式~」などとやらずとも、
SQLみたいにWhereによって取り出すことができます。
※SQLではありません。別物です。
今回は、リストに格納されているある条件のオブジェクトのみを取り出します。
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
List<ProductInfo> pList = new List<ProductInfo>();
pList.Add(new ProductInfo()
{
product_id = "A001-1",
product_name = "クレヨン1-1"
});
pList.Add(new ProductInfo()
{
product_id = "A001-2",
product_name = "クレヨン1-2"
});
pList.Add(new ProductInfo()
{
product_id = "A002-1",
product_name = "クレヨン2-1"
});
pList.Add(new ProductInfo()
{
product_id = "A002-2",
product_name = "クレヨン2-2"
});
// ①A001を取り出す
var pList1 = pList.Where(x => x.product_id.StartsWith("A001"));
Console.WriteLine("A001のみ");
foreach (var productInfo in pList1)
{
Console.WriteLine($"商品コード:{productInfo.product_id}");
Console.WriteLine($"商品名:{productInfo.product_name}");
}
// ②A002を取り出す
var pList2 = pList.Where(x => x.product_id.StartsWith("A002"));
Console.WriteLine("\r\nA002のみ");
foreach (var productInfo in pList2)
{
Console.WriteLine($"商品コード:{productInfo.product_id}");
Console.WriteLine($"商品名:{productInfo.product_name}");
}
Console.ReadKey();
}
/// <summary>
/// 商品情報オブジェクト
/// </summary>
class ProductInfo
{
public string product_id { get; set; }
public string product_name { get; set; }
}
}
}
実行結果
A001のみ
商品コード:A001-1
商品名:クレヨン1-1
商品コード:A001-2
商品名:クレヨン1-2
A002のみ
商品コード:A002-1
商品名:クレヨン2-1
商品コード:A002-2
商品名:クレヨン2-2
上記の例はproduct_idが「001」「002」から始まるものを(前方一致)取り出しているので、「StartsWith」をつかっています。後方一致の場合は「EndWith」を使います。
「x => x」の右辺の「x」がtrueになればよいので、完全一致の場合、「x => x.product_id == “A001″」となります。
今回は以上となります。